Instructor: James R. Glenn, Ph.D.
Office: AKW 013
Office Phone: TBD
Office Hours: TBD
e-mail: [first name][dot][last name]@yale.edu
Course Coordinator: Rob Brunstad (charles.[last name]@yale.edu)
TF and ULAs:
(see Piazza for hours)
- Yu Zhang (TF)
- Andre Braga
- Maya Boateng
- Max Bu
- Alex Chen
- Blaise Fangman
- Adit Gupta
- Jonathan Kraft
- Chae Young Lee
- Kelly Rudder
- Iram Sharieff
- Vaibhav Sharma
- Kevin Tang
- Matt Tu
- Bradley Yam
Lecture Tue, Thu 2:30pm – 3:45pm on Zoom
(check Yale Course Search
Prerequisites: CPSC 201 or equivalent (see Canvas for instructions for submitting a code sample used to determine if your previous experience is equivalent)
- Notes on Data Structures and Programming Techniques from Prof. Aspnes (also as a pdf)
- 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 $70.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
Please see Yale College's Undergraduate Regulations
and Definitions of Plagiarism, Cheating, and Documentation of Sources
The implications for this course; note the distinction between Programming Projects and Programming Exercises:
- Programming Projects: 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.)
- Programming Exercises: You may freely collaborate or use resources you
find online without applying the Gilligan's Island rule.
But you may not copy code electronically – read and
retype code instead. You must cite the sources of code you did not write.
- Exams: each student must work individually.
- Programming Exercises: 35%
- Programming Projects: 35%
- Exams: 15% each (self-scheduled outside class time Oct. 20 and Dec. 3)
It is very unlikely that we will be able to create make-up exams. If you have a Dean's Excuse and we cannot schedule a make-up then the other exam will be reweighted to make up the difference.
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 = holidays; grey = other