I primarily teach the following courses at BUCS:
I am scheduled to teach BU CAS CS392 in Spring, 2025. Note that this class is designed to be a faster-paced version of CS112. Please read the slides for more information.
This course starts by quickly revisiting and then building upon basic programming concepts in Java. Then, the main focus of the course is on the design, analysis and implementation of fundamental data structures used throughout computer science. These include linked lists, stacks, queues, trees, hash tables, graphs, as well as specialized methods for searching and sorting. All of our implementations will be in the the object-oriented programming language Java. The emphasis in teaching this course centers around the following:
Developing elegant and efficient code from an abstract specification;
Literate programming (writing programs that can be read by humans as well as machines);
Developing a toolbox of advanced data structures for use in your future programming tasks, and an awareness of various design patterns that recur frequently in advanced programming;
Critical thinking about programs and the programming process, which involves:
(For now, please see an old syllabus used during Spring, 2010)
First and foremost, if you are not sure about what is being asked to do, please seek clarification on the Piazza page.
If you feel that your work is not fairly graded, please raise your concern to me ASAP. If you don’t, then I could not tell. In general, grading tends to be interactive in the sense that you may receive feedback on your code and then be allowed to fix bugs if there are any.
Some basic familiarity with programming in general:
Algorithms by Robert Sedgewick and Kevin Wayne, Princeton University.