CS 2010 - Fall 2025. 1/13/2025.


[Home]

Welcome to CS 2010!

Note: you can find this page by going to the syllabus in canvas and then clicking "home" and "lectures" and "0827.html".

Video of the Day

Another Opening, Another Show

Based on a play by Shakespeare, with music by a Yale graduate, this number captures the feeling of hope, promise, uncertainty, and even trepidation felt by many of us in this course. Welcome back!

Logical problem of the day: 854-917-6320

What unique property does this number possess?

https://pollev.com/slade You may also download the app to your phone. Use the "slade" poll id. Note: you do not need to register. We don't grade these submissions.

Lecture 1: Introductory Lecture.

Discussion of Course and Instructor: Stephen Slade

Both CS 1001 and CS 1100 assume no prior programming experience. By contrast, CS 2000 and CS 2010 assume that this is not your first rodeo.

If you're thinking of taking CPSC 2010, please do the following.

Announcements

Ladies and Gentlemen, Start Your Engines!

Perlis epigram 19: A language that doesn't affect the way you think about programming is not worth knowing.

The language we'll use this term, Racket, is an offshoot of Scheme, which is an offshoot of LISP, which was designed as a higher-level language for writing artificial intelligence programs. We choose Racket because it is high-level, functional (as opposed to imperative), emphasizes recursion, and is unfamiliar to almost all students taking CPSC 201. It is definitely not widely used in industry. One goal is for you to learn new tools and paradigms for programming, to "affect the way you think about programming." It will be frustrating at times -- no assignment statements, no obvious analogs of for and while statements -- but it will expand your view of what programming can be.

We conclude with a gentle demonstration of Scheme (Racket) in action: 0827.rkt in which we do the following:

The Big Picture

There is a standard scheme for giving a talk.
  1. Tell the audience what you plan to tell them.
  2. Tell them.
  3. Tell them what you told them.
Today we are at step 1.

To some of you, the organization of topics in this course may seem hazy, like the shadows in Plato's cave. I want to assure you that, like in Blackadder, there is a cunning plan.

For years, academic computer scientists have debated the role of programming in introductory computer science courses. Many have argued that an introductory science course should expose the student to the great ideas of the discipline. Thus, an introductory biology course should cover topics such as evolution and molecular genetics, but not how to build a microscope. Accordingly, a computer science course should emphasize the major intellectual issues of computing, not how to write programs.

We do not agree with this position. First, programming is a major intellectual issue in computer science. Second, the comparison of programming to building a microscope misses the point. Writing programs in computer science is more like building a living organism in biology. If biology had advanced to a stage that permitted introductory students easily to construct amoebas and clams and roses and rabbits, there would be little debate over the intellectual content of such exercises. (Slade, The T Programming Language, 1987)

Here is the our framework. For the next few months, we will execute step 2. On April 25th, I will execute step 3.

Note: there are three other rules for public speaking...

Racket.

Racket.html (jupyter)

Getting to know UNIX

UNIX Introduction
[Home]