This core computer science course covers the internal workings of algorithms and data structures, from mathematical principles to implementation in C++. Topics include trees and graphs, hashing, greedy algorithms, dynamic programming, abstract data types & object-oriented design, regular expressions, context-free grammars, and theoretical (mathematical) models of computation.
The goal of the course is to refine and extend the concepts and practical skills introduced in CSS 342.
The subject matter is highly technical so considerable time and effort is required to achieve mastery. Expect to spend 10-15 hours outside of class per week.
Prerequisite: CSS 342 with a grade of 2.0 or better
Location & Time
Professor: Morris Bernstein
Assignments (best 4 of 5) | 40% |
Midterm | 30% |
Final | 30% |
Total | 100% |
---|
Assignments are to be handed in by 11:30pm on the due date. Waivers for late assignments may be negotiated on a case-by-case basis. Basic late penalty will be 10% per 24-hour period with advance notification.
Programming assignments should be turned in using catalyst. The dropboxes for assignments will be linked from the course web site.
Your code should compile and run properly using the Linux g++ compiler on the Linux Lab (UW1-320) machines. Compile-time errors will not be looked upon kindly.
Include a script named
Run
to build the program and run its unit tests. Include a text file
named
README
containing any relevant notes.
As the purpose of the assignments is to demonstrate understanding of the algorithmic techniques discussed in class, it is not necessary to sanity-check input or to be overly concerned with checking library-call return codes. This is, of course, an essential consideration for production-grade code, but is outside the scope of this class. Do write representative test cases to assure the correctness of your algorithm.
While your code will not be held to any particular style convention, do write your code to be readable with proper use of white space, reasonable naming conventions, and useful comments. Above all, be consistent. You will be dinged if you force your hapless marker to spend extra time trying to figure out what you did there.
Do review and think about the rationale behind various published style guides, such as:
Live lectures are inherently interactive. Questions during class are encouraged. Please raise your hand to get the instructor's attention. At the instructor's discretion, answers may be tabled until the end of class if they are too far off topic.
Limit computer use during class to note-taking so as to not distract or disturb your classmates or your instructor. Since a large part of the presentation involves diagrams, it may be more convenient to turn off the computer and take notes the old fashioned way. Quill pens are optional.
Flash photography is not permitted. Non-flash photography to capture the white board will be permitted as long as it is not disruptive or distracting. Don't even think about video.
Silence your cell phones.
If you arrive late or have to leave in the middle of class, do so quietly without causing disruption.
The assignments and project are to be done independently. Their purpose is to help you understand deeply technical material. You may discuss the problem statement with each other and help debug, but do your own design and coding. See the student honor code .
To request academic accommodations due to a disability, please
contact Disabled Student Services (DSS) at 425.352.5307,
425.352.5303 TDD, 425.352.5455 FAX, or at
dss@uwb.edu.
You will need to provide documentation of your disability as
part of the review process prior to receiving any accommodations
(by the third week of the quarter).
Topics labeled C++, refer to Data Abstraction and Problem Solving with C++; Topics labeled Math, refer to Discrete mathematics and Its Applications
Week | Date | Topic | Reading | Assignment |
---|---|---|---|---|
1 | Jan 8 |
|
C++ 1.3 | |
Jan 10 |
|
|||
2 | Jan 15 |
|
C++ 11.1, C++ 10 | |
Jan 17 |
|
C++ 12.1 | Assignment 1 due | |
3 | Jan 22 |
|
C++ 12.2 | |
Jan 24 |
|
C++ 11.2 | ||
4 | Jan 29 |
|
Math 11.2 | Assignment 2 due |
Jan 31 |
|
C++ 13 | ||
5 | Feb 5 |
|
C++ 13 | |
Feb 7 |
|
Assignment 3 due | ||
6 | Feb 12 | Midterm | ||
Feb 14 |
|
C++ 8.1-8.4 | ||
7 | Feb 19 |
|
C++ 8.5, 8.7 | |
Feb 21 |
|
C++ 8.7 | Assignment 4 due | |
8 | Feb 26 |
|
C++ 8.7 | |
Feb 28 |
|
Math 13.2-13.3 | ||
9 | Mar 5 |
|
Math 13.4 | Assignment 5 (design) due |
Mar 7 |
|
Math 13.1 | ||
10 | Mar 12 |
|
Math 13.5 | |
Mar 14 |
|
Assignment 5 (implementation) due | ||
11 | Mar 19 | Final Exam | ||