Computer Science S-111
Intensive Introduction to Computer Science Using Java
- August 4
- The final exam will be held on Friday,
August 8, from 8:30 a.m. to 11:30 a.m. in
Northwest B103 (note the change in room number).
- A practice final exam is available
The TAs will be going it over during Wednesday's review session, which
will be held during the usual lecture time.
- June 23
- Sections begin today. Section assignments, times, and locations
are available using the sections link in the left-hand navigation bar.
- Please complete Problem Set 0
ASAP. It will help you to prepare for your work in the course. In
addition, you can get started on Problem Set 1, which is available
using the assignments link.
The lecture notes for unit 1 -- along with a PDF of the full
coursepack -- are available using the lectures link.
- The first lecture will be held on Monday, June 23 in
For more information, consult the syllabus
or contact Dr. Sullivan.
Please check this page regularly throughout the semester for
announcements and course materials.
This course is a fast-paced introduction to computer science
designed for students who plan to work extensively with computers
(for example, engineers, biologists, physicists, and economists), as
well as future concentrators who plan to take more advanced courses
in the field.
The first half of the course covers foundational programming concepts
such as data types, conditional execution, iteration, and
recursion. It also explores the key features of object-oriented
programming, and the manipulation of data stored in files and
The second half of the course provides a survey of fundamental data
structures for information processing, including lists, stacks,
queues, trees, and graphs. It explores the implementation of these
data structures using both array-based and linked representations,
and it examines classic algorithms that use these structures for
tasks such as sorting, searching, and text compression. Techniques
for analyzing the efficiency of algorithms are also covered.
The course provides complete coverage of the syllabus for the advanced
placement examination in computer science. It also covers most of
the topics in the Harvard Extension School courses CSCI E-10a, CSCI
E-10b and CSCI E-22 (formerly E-50a, E-50b, E-119).
Relative to Harvard College courses, it
includes a substantial fraction of CS 50 (although that course uses
C, not Java), along with some topics from CS 51 and CS 124.
David G. Sullivan, Ph.D.
Senior Lecturer on Computer Science, Boston University
see the staff page for contact info.
Familiarity with precalculus. No prior programming experience is
Requirements and policies
See the syllabus
- Building Java Programs by Stuart Reges and Marty Stepp
(Addison Wesley, 2013). We will be using the third edition
of this textbook (ISBN 978-0133360905); copies are
available at the Harvard Coop. If you don't expect to need
the book after the course is over, you can lease a cheaper
electronic version of the book at
- Computer Science S-111 coursepack. Information about how
to obtain it will be given during the first lecture.
- Optional readings will be also given from the following
Data Structures & Algorithms in Java, 2nd edition by
Robert Lafore (SAMS Publishing, 2003, ISBN 9780672324536).
This book is not required, but you may find it useful to purchase
it. It will be available for purchase at the Harvard Coop,
and it will also be on reserve in Grossman Library.