CPAC Syllabus

Professor Evan Korth

Clinical Associate Professor
Computer Science Department
Courant Institute of Mathematical Sciences
New York University

Email (add korth
251 Mercer Street, Room 319
New York City, 10012
Tel.: 212-998-3301

Mandatory Text

Data Structures & Algorithm Analysis in JAVA Second Edition
By Mark Allen Weiss
Published by Addison-Wesley, 2006
ISBN: 0-321-37013-9

Introduction to Java Programming, Brief, 8/E
Note: If you already own the Sixth/Seventh Edition you can use it for this course
Note: You do not need the comprehensive edition
By Y. Daniel Liang
Published by Prentice Hall, 2010
ISBN-10: 0132130793 ISBN-13: 9780132130790

Optional Text

Java How to Program, 8/e
By Deitel and Deitel
Published by Prentice Hall, 2009
ISBN-10: 0136053068 ISBN-13: 978-0136053064

Course Summary

Course Description

An accelerated introduction to the fundamental concepts of computer science for students who lack a formal background in the field. Topics include algorithm design and program development; data types; control structures; subroutines and parameter passing; recursion; data structures; searching and sorting; dynamic storage allocation; abstract data types, such as stacks, queues, lists, and tree structures; and an introduction to the principles of object-oriented programming. The primary programming language used in the course will be Java.


Your grade will be based on weekly programming assignments, quizzes or exams, and a final exam. The programming assignments will count for 25% of your grade, the quizzes and/or exam will count for 40%, and the final exam will count for 35%.

E-mail Accounts

All students are required to have e-mail addresses, and e-mail will be used extensively for communication with the course tutors, and for submitting the homework assignments. Your e-mail headers and mailing list subscription information must clearly display your name. Do not use an alias instead.

Class mailing list

It is an absolute requirement of this class to join the class mailing list. All important announcements will be sent to the class mailing list.

Instructional Assistant, grader and Computer Assignments

Our class has been assigned an Instructional Assistant and a grader. They are available by e-mail to help you with questions about the computer assignments, to evaluate your submissions, and to steer you in the right direction when help is needed. Weekly programming assignments will be given. Solutions must be submitted by e-mail, on or before the due date. Your grader will send you an e-mail giving a numerical grade for your program. The grader will run the final program on various inputs, so it is important that the program work correctly for any choice of input.

Remember that although the e-tutor and instructional assistant are there to help you, they are also helping many other students, so limit your e-mail communication to a reasonable amount.

Remember that although the e-tutor is there to help you, he is also helping many other students, so limit your e-mail communication to a reasonable amount. If you are have much difficulty with the programs, you should ask your instructor and/or TA for assistance.

Cooperation, Acknowledgments and Cheating

You are expected to do your own work. It is fine, in fact often very helpful, to work cooperatively with other students, but the work you submit should be your own. If you get an idea from another student, or from a tutor, that you use in your work, this is OK, but you must acknowledge that person in the program comments. When you turn in an assignment, you are saying that you have done this work yourself. See the Computer Science Department's Academic Integrity statement. Disciplinary action will be taken against those who violate the rules.

Students who spend little time on the homework invariably do poorly on exams and end up with a poor final grade.


This is a tentative list of the topics we will cover:

Liang book:
  • Ch. 1, Introduction to Java
  • Ch. 2, Primitive Data Types (Elementary Programming)
  • Ch. 3, Selection Statements
  • Ch. 4, Loops
  • Ch. 5, Methods
  • Ch. 6 & 7, Arrays
  • Ch. 8, Objects and Classes
  • Ch. 9, Strings
  • Ch. 10, Thinking in Objects
  • Ch. 11, Inheritance and Polymorphism
  • Ch. 14, Abstract Classes and Interfaces
  • Ch. 20, Recursion

Weiss book (note: most chapters will NOT be covered in their entirety):
  • Ch. 1.3, Recursion
  • Ch. 2, Asymptotic Analysis of Algorithms: We will just scratch the surface as we look at the efficiency of some of our structures and algorithms
  • Ch. 3, Lists, Stacks and Queues
  • Ch. 4, Trees
  • Ch. 6, Heaps
  • Ch. 7, Sorting
  • Ch. 5, Hashing
  • Ch. 10.1.2, Huffman Codes