Michael D Stiber
Develops competencies associated with problem-solving, algorithms, and computational models. Covers abstract data types and data structures, efficiency of algorithms, binary tree representations and traversals, searching, dictionaries, priority queues, hashing, directed graphs and graph algorithms, and language grammars. Prerequisite: minimum grade of 2.0 in CSS 301; minimum grade of 2.0 in either CSS 263 or CSS 342; minimum grade of 2.0 in either B CUSP 125 or MATH 125; may not be repeated.
By the end of this quarter, you will be confident C++ programmers and will be comfortable with the basics of object-oriented design and programming. You will understand how to analyze a problem and design a solution, recognizing when existing techniques and software are reusable. You will know many basic data structures, algorithms, and the tradeoffs among memory, running time, and implementation time associated with them. Topics include: trees, tables and priority queues, graphs, grammars, data abstraction, modules, reusable type, object-oriented design, OO programming, project management methods, computational complexity and algorithm analysis.
Student learning goals
General method of instruction
Class assignments and grading
Three large software development projects, including analysis and design phases with required documentation prior to coding.
Written assignments focusing on mathematical underpinnings of Computing.
Midterm and final examination.