Outside
A solid foundation
Yale University Department of Computer Science
CS 223b: Data Structures and Programming Techniques
Michael J. Fischer

Syllabus, Spring 2007
 
CS Department CS Courses M. Fischer Home M. Fischer Email
Course Home
Syllabus
Handouts
Lecture Notes
Resources
Old Announcements

<< Back

Foundation

1 Official Yale Course Listing

CPSC 223 01 (21533)
Data Structures and Programming Techniques
Michael Fischer
TTh 1.00-2.15 BCT 102
Final exam scheduled (Group 26) 05/10/2007 Th 9.00
Distributional Group IV
Not Cr/D/F
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. After CPSC 201a or b or equivalent.

2 Course Description

This course covers four main topics:

  1. The C programming language, the standard C library, and tools for building software written in C.
  2. Fundamental data structures for problem solving, including arrays, stacks, queues, lists, trees, heaps, and graphs.
  3. Fundamental algorithms for sorting, searching, and storage allocation and management.
  4. Techniques for the specification, design, verification, testing, debugging, and performance tuning of software.

3 Course materials

Required textbook: Eric S. Roberts, Programming Abstractions in C: A Second Course in Computer Science, Addison-Wesley, 1998, ISBN 0–201–54541–1.

Recommended reference: Samuel P. Harbison III and Guy L. Steele Jr., C: A Reference Manual, Fifth Edition, Prentice Hall, 2002, ISBN 0–13–089592X.

Website: I maintain a course website at http://zoo.cs.yale.edu/classes/cs223/2007s/index.html. You should bookmark it in your browser and visit it often. It will grow as the term progresses and will contain announcements, handouts, lecture notes, revisions to homework assignments, programming hints, and links to documents in the course directory and elsewhere on the web.

4 Course Mechanics

Prerequisites: The prerequisites for this course are CPSC 201a or b or equivalent. The ability to write a non-trivial program in some language is required.

Requirements: Course requirements include weekly programming assignments and/or written problem sets (~40%), a midterm exam (~20%), and a final exam (~40%). The approximate weights of each in determining the course grade are shown following in parentheses and are subject to change depending on the number and difficulty of the assignments actually given.

Assignments and other announcements: Written problem sets and programming assignments will posted on the handouts page of the course website from time to time during the course. Other course announcements will be posted on the course home page. It is your responsibility to check these pages frequently.

Email: I am always available for email consultation at fischer-michael@cs.yale.edu. I can’t always promise to respond right away, but I can often be reached by email when I am away from the office. Email is also the preferred way to arrange an appointment with me.

5 Policies

Late Policy: Late work will generally not be accepted without a Dean’s excuse unless prior arrangements have been made with the instructor. In no case will work be accepted after graded papers have been returned or solutions released. However, alternative means for making up missed work may be arranged on an individual basis with a Dean’s excuse. Please contact the instructor or TA as soon as you find out that you are unable to submit work on time or to attend a scheduled exam so that suitable makeup arrangements can be made.

Policy on Working Together: Work turned in under your name must be your own work. Plagiarism is unethical and will not be tolerated. You may neither copy from others nor permit your own work to be copied. Therefore, it is important that you keep your files protected so that others cannot read them and that you carefully guard your password. Likewise, do not leave printed work in public areas such as the Zoo or in accessible wastebaskets. You may of course discuss the lectures and readings with your classmates in order to improve your understanding of the subject. Under no circumstances should your work be in the possession of another student. If you have benefitted substantially from hints or solutions received from fellow students or from outside sources, then you must explicitly acknowledge your sources in your work. Using outside resources in solving a problem is acceptable but plagiarism is not. You are also always free (and encouraged) to come in and ask the TA or instructor for help about anything concerning the course. Please talk to me if you have any questions about this policy.

Policy on Computer Problems: The Yale College policy on “Use of Computers and Postponement of Work” in the Yale College Programs of Study applies to this course. It is reproduced below.

“Problems that may arise from the use of computers, software, and printers normally are not considered legitimate reasons for the postponement of work. A student who uses computers is responsible for operating them properly and completing work on time. (It is expected that a student will exercise reasonable prudence to safeguard materials, including saving data on removable disks at frequent intervals and making duplicate copies of work files.) Any computer work should be completed well in advance of the deadline in order to avoid last-minute technical problems as well as delays caused by heavy demand on shared computer resources in Yale College.”

Particularly relevant for this course are the cautions against leaving a programming assignment to the last minute when machines might be busy, printers broken, and so forth, and about safeguarding your data.

6 Computing Facilities

The Zoo: This course will be using the Computer Science Department’s educational computing facility, otherwise known as the Zoo. This facility contains Pentium-based PC’s running Linux. You will need to learn how to use these machines if you don’t already know how in order to read email, browse course-related web pages, edit and compile C programs, and access the course directory. Look at http://zoo.cs.yale.edu/help/ for information on getting started if you are new to the Zoo.

Your course account: You should request a course account for this course even if you already have a Zoo account, for otherwise you will be unable to submit work electronically. To obtain your account, go to http://zoo.cs.yale.edu/help/accessing-zoo.shtml and follow the instructions there.

Course directory: The shared course directory, /c/cs223, is located on the Zoo server. You can access it from your Zoo course account. It will contain software that you will be using for this course and miscellaneous documentation and files. It will also contain the software that you will use when submitting assignments electronically. Public files there can be accessed via the web as well as from a Zoo node. Your class account home directories will also be located there.

Comments about this website should be directed to M. Fischer