Have a question? Please contact Dave Pritchard (dp6@cs).
Course description. An introduction to computer science in the context of scientific, engineering, and commercial applications. The goal of the course is to teach basic principles and practical issues, while at the same time preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. Topics include: programming in Java; hardware and software systems; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis.
Instructor. Doug Clark.
Lectures. Lectures meet on Tuesdays and Thursdays at 10am (L01) and 11am (L02).
Preceptors. Cagin Ararat · Aleksey Boyko · Si Chen · Xinyi Fan · Donna Gabai · Mojgan Ghasemi · Maia Ginsburg · Borislav Hristov · Judi Israel · Nanxi Kang · Kevin Lee · David Pritchard (lead) · Bebe Shi · Boyang Song · Andrew Timmes · Wathsala Vithanage · Terry Yannan Wang · Victor Shaoqing Yang
Precepts. Precepts meet twice a week on Tuesdays and Thursdays or Wednesdays and Fridays. Precepts begin either Tuesday February 4 or Wednesday February 5.
Undergraduate coordinator. For enrollment problems, see Colleen Kenny-McGinley in CS 210.
Course website. The course website contains a wealth of information, including precept rosters, office hours, lecture slides, programming assignments, and old exams.
Software. Links to install the course software package (introcs) appear in the first assignment.
Computing facilities and lab TAs. You may use your own computers, or the labs in Friend Center 017. Most evenings, undergraduate lab TAs are available there to provide general help with using your operating system and assist with debugging your programs. Click here for more information and hours.
Online forum. If you have general questions about the assignments, lectures, textbook, or other course materials, please post via Piazza. See the course policies page for more information. To sign up for the course's Piazza page, visit
Grading. Two 2-part exams (50%), nine programming assignments (40%), final programming project (10%), and staff discretion. We record grades in Blackboard.
Regrading policy. Occasionally, we make mistakes. To request a regrade: write a brief note indicating the perceived mistake by the grader, attach it to your graded work, and give it to your preceptor within two weeks of when the graded work was returned.
Midterm exams. There are 2 two-part midterms during the semester. No final exam.
Programming assignments and final project. There are weekly programming assignments plus a final programming project, usually due Mondays at midnight, beginning February 10.
Required readings. R. Sedgewick and K. Wayne, Introduction to Programming in Java: An Interdisciplinary Approach, Addison-Wesley, 2007. ISBN 0-321-49805-4. Available at Labyrinth Bookstore, 122 Nassau Street. Also on reserve at Friend library.
Recommended readings. D. Harel, Computers Ltd.: What They Really Can't Do, Oxford, 2003. ISBN 0-19-860442-4. Available at Labyrinth Bookstore, 122 Nassau Street. Also on reserve at Friend library.
Auditing. Auditors must identify themselves to the lead preceptor. Auditors will receive only automated feedback on work (immediate feedback in the dropbox, plus an e-mailed printout of some automatic tests for every week's homework). If you successfully complete ALL of the programming assignments (including the Atomic final project) using at most 4 late days, you will get "audit credit" at the end of the course. Auditors must not attend exams.