- James R. Glenn, Ph.D.
- Office: AKW 013
- Office Hours: Mon 3-5pm, Tue 4-6pm
- e-mail:[first name][dot][last name]@yale.edu
- Ozan Erat, Ph.D.
- Office: AKW 010
- Office Hours: Tue/Thu 1-2:30pm
- e-mail: [first name][dot][last name]@yale.edu
- Alan Weide, Ph.D.
- Office: AKW 002
- Office Hours: Mon/Wed 2:30-3:30pm, Tue/Thu 10-11am
- e-mail: [first name][dot][last name]@yale.edu
Lecture Tue, Thu 2:30pm – 3:45pm in DL 220
(check Yale Course Search
CPSC 201 or equivalent (see Canvas for instructions for submitting a code sample used to determine if your previous experience is equivalent).
Most relevant to CPSC 223, CPSC 201
and its prerequisite courses give students experience writing and debugging
- non-trivial algorithmic complexity (for example, nested loops
where some are not counting or for-each loops; a rule of thumb
for determining "non-trivial complexity" could be
programs that you could not debug just by looking at the output),
- computer organization, and
- an introduction to runtime analysis of algorithms using
asymptotic (big-O) notation.
Some additional topics from
CPSC 201 and its prerequisites are not directly relevant to
CPSC 223 but are revisited in courses beyond CPSC 223.
- Notes on Data Structures and Programming Techniques from Prof. Aspnes
- C in a Nutshell (2nd edition)
by Prinz and Crawford
(retail price $69.99)
- Learning the Unix Operating System (5th edition)
by Peek, Todina, and Strang
(retail price $29.99)
- Unix in a Nutshell (4th edition)
by Arnold Robbins
(retail price $44.95)
- Data Structures Using C
by A.K. Sharma
(ebook price $32.00)
Most students use the notes from Prof. Aspnes as their primary reference.
The rest are available for online reading through the Yale Library, subject to a six simultaneous user limit. You will need to use the Yale
VPN to access the e-books from an off-campus network.
Topics include programming in C; data structures
(arrays, stacks, queues, lists, trees, heaps, graphs); sorting and searching;
storage allocation and management; data abstraction; programming style;
testing and debugging; writing efficient programs.
Students will be able to
- use, implement, and adapt standard data structures to design
efficient solutions to problems in C on Unix systems
Diversity and Disability:
The Computer Science department values diversity and inclusion;
we are committed to a climate of mutual respect and full participation.
Our goal is to create learning environments that are usable, equitable,
inclusive, and welcoming. If there are aspects of the instruction or
design of this course that result in barriers to your inclusion, achievement,
or accurate assessment, please notify the instructor as soon as possible.
Disabled students are also welcome to contact
Student Accessibility Services
to discuss a range of options to removing barriers in the course,
including accommodations. If a religious observance prohibits work
for a substantial period of time soon before a deadline, please contact
an instructor for alternative arrangements.
Please see Yale College's Undergraduate Regulations
and Academic Dishonesty
The implications for this course
- Programming Assignments: The code you submit must be the result of your understanding
of the problem. You may discuss concepts and approaches with other students, but you
may not take any written or electronic records from such discussions
(this includes discussions on Piazza; such discussions are electronic records
so you may not post code there).
you must engage in a full hour of mind-numbing activity (such as watching back-to-back
episodes of Gilligan's Island) before resuming work. This no-record/"Gilligan's Island" rule
applies to code found in online or other published sources as well
(aside from the class notes and material listed on this page, which can be used
without attribution and without triggering the "Gilligan's Island"
Under no circumstances may you examine a copy of another student's code nor may you provide
a copy of your code to another student.
You may consult course staff for help writing and debugging without attribution and doing
so does not trigger the Gilligan's Island rule.
(The Gilligan's Island rule originated with
Stanley Eisenstat and I obtained it through Stephen Slade.)
- Exams: each student must work individually.
- Programming Assignments: 70% (equally weighted except for #0)
- Midterm Exam: 15% (Tue Oct 25 during the regular class period, room TBD)
- Final Exam: 15% (Sun Dec 18 at 7pm, room TBD)
It is very unlikely that we will be able to create make-up exams. If you have a Dean's Extension and we cannot schedule a make-up then the other exam will be reweighted to make up the difference.
Late Policy and Flexibility in Grading:
Except as noted on the assignments page, assignments are due at
11:59:59pm ET on the date listed.
Beyond that, late submissions with no Dean's Extension will incur a 5-point
penalty for each 12-hour period after the end of the grace period.
Absent a Dean's Extension,
no work will be accepted more than 120 hours after the due date, or after
the end of Reading Period, whichever comes earlier.
Every programming assignment and late period
deadline except for the end of Reading Period has an
automatic 2 hour grace period. The grace period is to account for
last-minute problems like laptop batteries dying, slowdowns on the Zoo,
or frogs raining from the sky. It is strict.
To allow for circumstances that do not meet the requirements for a
Dean's Extension, and to allow for students to manage their
workload when they have several assignments due in different
classes at the same time,
each student's first 50 lateness points for the semester will
be forgiven; this has the effect of giving each student 5 free late
days to use in 1/2-day increments throughout the semester.
If you ask your residential college dean about a Dean's
Extension and they ask you to speak to your instructor first, tell them
that your instructor said to refer to the syllabus for this policy about
extensions. If they do not then issue a Dean's Extension, then this policy
applies to your situation.
In addition, each programming assignment will have a subset of the
required functionality and corresponding publically available tests
designated as a checkpoint. Students
may replace their final grade on one programming assignment with their
grade on the checkpoint. Which assignment is selected will be determined
automatically at the end of the semester to the best advantage to the
Schedule (subject to change):
C = C in a Nutshell,
LU = Learning the Unix Operating System,
UN = Unix in a Nutshell,
DS = Data Structures in C,
A = CPSC 223 Notes from Prof. Aspnes
white = 223 class days; black = weekends/holidays; grey = other