CS U215/216: Algorithms and Data Structures for Engineers Summer 1 2005

[ Administrivia | Outline ]

Administrivia

Home page: http://www.ccs.neu.edu/course/csu215/index.html
Times and places:

Instructor: William D Clinger
Lab Instructor: Peter Douglass

Prerequisites: Restricted to Engineering students who have completed the introductory Engineering problem solving course (GEU 111) or the equivalent. May not be taken by majors in Computer or Information Science.

Catalog Description:
Algorithms and Data Structures for Engineers introduces algorithms and data structures for engineering students. Discusses data structures such as arrays, stacks, queues, and lists and the algorithms that manipulate these structures. Introduces simple algorithm analysis. Discusses classes and objects and presents the basic material about encapsulation, inheritance, and polymorphism. Introduces software development practices such as modular design, use of libraries, testing methods, and debugging techniques.

Textbook: Frank L Friedman and Elliot B Koffman. Problem Solving, Abstraction, and Design Using C++. Fourth Edition. Pearson/Addison-Wesley, 2004.

Despite the high-falutin' catalog description, this course is basically an introduction to programming in C++.

This is a summer course, so it moves twice as fast as a fall or spring course. The Monday lectures will review previous lectures and cover new examples in more detail. The Tuesday lectures will be preceded by written examinations. Each Tuesday and Thursday lecture will cover most of one chapter in the textbook (or an equivalent amount of material when the textbook does not cover a topic in depth). The Wednesday labs are required, and will focus on the nuts and bolts of programming assignments.

No final exam will be given. The final grades will be based on the weekly exams, the programming assignments, the lab assignments, and participation in labs and the Tuesday/Thursday lectures. Your grade for CS U216 will be the same as your grade in CS U215.


Outline

  1. Developing, executing, and testing software
  2. Writing simple programs in C++ under Visual Studio
  3. Developing software by composition of components
  4. Conditional and repetitive execution
  5. Functional abstraction
  6. Aggregate data
  7. Class abstraction
  8. Dynamic data structures
  9. Algorithms and invariants
  10. Testing, verification, and debugging
  11. Efficiency of algorithms
  12. Reusing standard data structures
  13. Computer arithmetic and character sets
  14. Files as aggregate data structures


Last updated 5 May 2005.