Syllabus for Computer Science 223b, Data Structures and Programming Techniques. Instructor: James Aspnes.
1. On-line course information
On-line information about the course, including copies of all handouts, can be found using the URL http://pine.cs.yale.edu/pinewiki/CS223. This will also be the main location for announcements about the course, lecture schedules, and so forth. Please check it frequently.
2. Meeting times
3. Synopsis of the course
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.
CS 201, or equivalent background. See me if you aren't sure.
There are three required textbooks for this course:
Fundamentals of Data Structures in C, second edition, by Ellis Horowitz, Sartaj Sahni, and Susan Anderson-Freed. Silicon Press, 2008. ISBN 0929306406. A thorough survey of data structures and basic algorithms from a programmer's perspective. We won't cover everything in this book, but we will likely be using it a lot. Available on-line if you are on the Yale campus or VPN.
The C Programming Language (2nd Edition), by Brian W. Kernighan and Dennis M. Ritchie. Prentice Hall, 1988. ISBN 0131103628. The definitive reference on C. You should memorize this book.
The Practice of Programming, by Brian W. Kernighan and Rob Pike. Addison-Wesley, 1999. ISBN: 020161586X. Covers aesthetic and practical issues in designing, writing, testing, and tuning programs, with an emphasis on C and similar languages. You should read through this book once you understand the nuts and bolts of C.
6. Course requirements
Ten weekly homework assignments, and two in-class exams. Assignments will be weighted equally in computing the final grade. Each exam will count as three assignments.
7. Use of outside help
Students are free to discuss homework problems and course material with each other, and to consult with the instructor or a TA. Solutions handed in, however, should be the student's own work. If a student benefits substantially from hints or solutions received from fellow students or from outside sources, then the student should hand in their solution but acknowledge the outside sources, and we will apportion credit accordingly. Using outside resources in solving a problem is acceptable but plagiarism is not.
8. Clarifications for homework assignments
From time to time, ambiguities and errors may creep into homework assignments. Questions about the interpretation of homework assignments should be sent to the instructor at <email@example.com>. Clarifications will appear in the on-line version of the assignment.
9. Late assignments
Assignments submitted after the deadline without a Dean's Excuse are automatically assessed a 2%/hour penalty.