Syllabus for Computer Science 201


Introduction to Computer Science, Spring 2018

MWF 11:35-12:25pm, DL 220

Stephen Slade
014 AKW, 432-1246
Office hours: Wednesday 2 to 4 pm, and by appointment.

Teaching Assistants: Please see Instructor and TA contact information.

Course Description

Introduction to the concepts, techniques, and applications of computer science. Topics include computer systems (the design of computers and their languages); theoretical foundations of computing (computability, complexity, algorithm design); and artificial intelligence (the organization of knowledge and its representation for efficient search). Examples stress the importance of different problem-solving methods.


The Racket Guide. A description of Racket for people with previous programming experience.

Additional readings are listed on the assignments page, including books on reserve at Bass.

Other Resources

Web page
The course web page is at
Students will be enrolled in a piazza site for the course. which permits an interactive exchange of questions and information. Note: students are not allowed to post code to piazza.
Zoo accounts
The Zoo is a collection of computers located on the 3rd floor of AKW at the front of the building. You will need a *course account* on the Zoo to submit homework. Sign up for a CS 201 course account on the Zoo using the on-line signup procedure at There will be *help sessions* on using the Zoo early in the term. A Zoo tutorial is available on-line from the course web page.
Course directory
The course directory, /c/cs201 is accessible from your Zoo course account. It contains copies of handouts.

Course Requirements

The course requirements consist of class attendance, (more-or-less) weekly programming assignments in Racket and occasional written homework, and two EVENING MIDTERMS and a FINAL EXAM. Plan on spending between 6-8 hours per week on the course outside of class. The programming assignments are an integral part of the course.

Please try not to leave the homework to the last minute. You will be more efficient, learn more, have more chance to get help, and generally be calmer and happier if you do the associated reading first and start the programming or other problems early.


The final grade in the course will be based on class participation, your performance on the programming assignments and other homework, and the exams. The weighting of these components will be approximately 40% on homework and 60% on exams.

Late Policy

Late work without a Dean's excuse will be assessed a penalty of 5 points per day, based on the day and time recorded by the Zoo electronic submit program. At the end of term, up to 25 points will be deducted from the total lateness penalties your homework has accrued. However, according to Yale College regulations, *no* homework can be accepted after the end of Reading Week without a Temporary Incomplete (TI) authorized by your dean.

If you have a Dean's excuse or a TI, making up missed work may involve alternative assignments, at the discretion of the instructor; please check with the instructor in this case.

Errata Policy

In an unprecedented act of humility, I will award errata points to students who find errors in the handouts or class notes. There is an errata folder in piazza for this purpose. One point per error. The point is awarded to the first student who notifies me (in writing) of the error. Errata points may be redeemed for late days.

Policy on Working Together

Unless otherwise specified, the homework assignments are your individual responsibility. Plagiarism is a violation of University rules and will not be tolerated. You must neither copy work from others (at Yale or elsewhere) nor allow your own work to be copied. You are definitely on the wrong side of the boundary if you give or receive a printed or electronic copy of your or anyone else's work for the course from this term or previous terms.

You are encouraged to ask others for help with the computers and Unix, with questions about Scheme, general questions about the concepts and material of the course, but if you need more extensive help with a program or other assignment, please ask a TA or the instructor for assistance. Working in groups to solve homework problems is not permitted in this course. Please talk to the instructor if you have any questions about this policy.

Course Outline

Week Date Topic
1 Jan 17, 19 Introduction. Racket
2 Jan 22, 24, 26 Racket
3 Jan 29, 31, Feb 2 Racket
4 Feb 5, 7, 9 Racket. Computability.
5 Feb 12, 14, 16 Computability.
6 Feb 19, 21, 23 Boolean functions and Expressions
7 Feb 26, 28, Mar 2 Review for midterm I. Gates and Circuits.
Feb 27 Evening midterm 7-8:30pm RTBA
8 Mar 5, 7, 9 Computer Architecture.
9 Mar 26, 28, 30 Strings and languages.
10 Apr 2, 4, 6 Strings and languages.
11 Apr 9, 11, 13 Review for midterm II. Compilers.
Apr 10 Evening midterm 7-8:30pm RTBA
12 Apr 16, 18, 20 Running time of programs.
13 Apr 23, 25, 27 Recursion, memoization, Dynamic programming. Review for final exam
May 7 Final Exam 2pm RTBA

Please see the course webpage for lecture summaries from Spring 2014 for an indication of the topics covered by the course. This term's coverage may differ somewhat.