CS 201 - Spring 2025. 1/13/2025.


[Home]

Welcome to CS 201!

Note: you can find this page by going to the syllabus in canvas and then clicking "home" and "lectures" and "0113.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 110 and CS 112 assume no prior programming experience. By contrast, CS 200 (in the fall) and CS 201 assume that this is not your first rodeo.

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

Announcements

  • STEM Navigators Spring Kickoff and STEM Extracurricular Bazaar, Friday January 17th, 3 PM.

    Come join STEM Navigators at our Spring Kickoff + STEM Extracurricular Bazaar on Friday, January 17th, from 3:00–4:00 PM at the Poorvu Center, Room 120A! Enjoy hot chocolate and cookies while meeting STEM Navigators mentors and members from 13 of Yale’s STEM organizations, representing fields ranging from healthcare to computer science and engineering. This is a fantastic opportunity to learn more about the STEM Navigators program, explore Yale’s STEM extracurriculars in a focused and intimate setting, and discover ways to engage with the STEM community. RSVP here, and check out the list of participating extracurriculars here. Everyone is welcome to attend, regardless of involvement in STEM Navigators!”

    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: 0113.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]