- Class Meeting: 1:45-3:00 pm US Eastern Time Mondays & Wednesdays on Zoom (link on Sakai).
- Instructors: Professors Kristin Stephens-Martinez and Brandon Fain
- Staff Teaching Associate: Kate O’Hanlon
- Grad Teaching Assistants: Yanxi Li, Wei Zhang
- All Teaching Assistants
- Contact: compsci201–email@example.com
- Syllabus: Syllabus link
In this course, you will learn how to analyze, use, and design data structures and algorithms in an object-oriented language (Java) to solve computational problems. Emphasis on abstraction including interfaces and abstract data types for lists, trees, sets, tables/maps, and graphs. Implementation and evaluation of programming techniques including recursion. Intuitive and rigorous analysis of algorithms.
At the end of the course, students should be able to:
- Given a problem statement & a real data source, design, develop, debug, and test a Java program that uses appropriate standard libraries to efficiently solve the problem.
- Write programs that effectively implement and use data structures such as: arrays, maps, linked lists, stacks, queues, trees, and graphs.
- Evaluate the time and space complexity of iterative and recursively-defined algorithms using empirical and mathematical analysis.
You should have introductory programming experience at the level of Computer Science 101, Engineering 103L, or equivalent. Prior experience specifically with the Java programming language is helpful but not necessary.