Course Description
The course introduces widely used and effective methods of data organization, focusing on data structures, their algorithms, and the performance of these algorithms. Specific topics include priority queues, sorting, dictionaries, and data structures for text processing.
Students will learn to:
- Analyze, apply, and use various data structures and data management techniques in a variety of applications,
- Perform rigorous complexity analyses of simple algorithms and data structures, which includes writing correct mathematical proofs on inductively-defined structures and solving simple recurrence relations,
- Compare different data-structuring techniques from the point of view of time, memory requirements etc.,
- Select a good data structure to solve a specific algorithmic problem,
- Apply data structures correctly and efficiently in C++.
More details on the goals and coverage of the course can be found in the official course description.
Tools directory
The course uses a number of different tools for distributing information and receiving submissions. (Unfortunately, no one tool seems suitable for doing all tasks.) The table below should help you keep track of which tool to use when:
What | When | Where | Comments |
---|---|---|---|
Announcements | Daily | Piazza | Announcements of all kinds, also polls, corrections, ... |
Modules | Before lecture | Lecture-tab on this web page | These are the slides that are used in the lecture. Typically a module covers 2-3 classes, but this varies. We aim to post the next module at least a few days before it is needed. |
Assignment Questions | When announced on piazza | Assignments-tab on this web page | Read this as soon as it is available so you know which parts of class you need to pay special attention to. |
Assignment (Written) Submission | A few days before the due date | MarkUs. You will need to log in with your userid. |
Submit a PDF. Submit early; you can override what you submitted later with an improved version. |
Assignment (Programming) Submission | A few days before the due date | MarmoSet. You will need to log in with your userid. |
Submit a text-file with extension .cpp. Submit early; you can override what you submitted later with an improved version. |
Exam Information | When announced on piazza | Exams-tab on this web page | |
Exam Seat | A few days before the exam | Odyssey |
The following are optional.
What | When | Where | Comments |
---|---|---|---|
Course notes | After lecture | Protected-file area on this web page. You will need to log in with your userid. |
The course notes cover all material of the modules, but in much greater detail, and they often give further results (as well as material for the enriched section). You are not required to know material beyond what was covered in class, but the course notes will give you a different perspective and so are recommended reading. Chapter X roughly corresponds to Module X. |
Quizzes | After each module | Submit-tab on LEARN. You will need to log in with your userid. |
These are not worth credit, but may help you in self-testing your understanding of the material. |
Tutorial Questions | A few days before tutorial | Tutorials-tab on this web page | You should attempt the tutorial-questions on your own, and if you find these difficult, be sure to attend tutorial. |
Tutorial Solutions | A few days after tutorial | Protected-file area on this web page. You will need to log in with your userid. |
These may well be incomplete. |
Assignment (Written) Solutions | A few days after the due date | Protected-file area on this web page. You will need to log in with your userid. |
|
Assignment Remark Requests | Within a week from piazza-post that marks are released | email to cs240@uwaterloo.ca | See info page for more details |
Midterm grades/comments | When notified by email. | Crowdmark. | Crowdmark will send an email to (max-8-char userid)@uwaterloo.ca with a link. |
Paperwork, VIF, SDA, AAS | As soon as possible after the event | email to kaanders@uwaterloo.ca | See info page for more details |
- Solutions for programming assignments.
- Exams from previous CS240 offerings.
- Solutions for the midterm or final exam.
- Final exams grades/comments.