Winter 2017 -- Department of Computer Science, University of Western Ontario
CS2121/9643 - Data Structures and Algorithms
The purpose of this course is to provide students with foundations in the basic concepts of data structures and algorithms. The main objective of the course is to teach the students how to select and design data structures and algorithms that are appropriate for problems that they might encounter. Students will be exposed to a variety of data structures, their advantages and disadvantages, and will learn when different data structures are useful. This course is also about ensuring that students understand basic algorithms for manipulating these data structures and using them in varying informatics and analytics domains.
Topics covered in this course include:
"Computational thinking is a fundamental skill for everyone, not just for computer scientists."
- Stacks and queues
- Analysis of Algorithms
- Trees, binary search trees, multi-way search trees
- Dictionaries, hash tables
- Graphs, graph traversals, graph algorithms
- Sorting and searching
(The New York Times, 2012)
This course is aiming at teaching computational skills for non-computer science students. It is a fact that people lacking such skills are and will increasingly be at disadvantage in all areas of activities. Simply put, to solve a problem using a computer one needs an algorithmic solution and a computer program implementing it. By learning a programming language (e.g., by attending CS2120, a prerequisite for this course), students took an important step towards acquiring a computational background by learning how to translate a solution into code. However, this is of little use without the ability to create the algorithmic solution to solve the problem. The crucial ability that is necessary is "computational thinking" and this course aims specifically at developing it.
Computer Science 2120a/b
Computer Science 2210a/b, Software Engineering 2205a/b
Dr. Lucian Ilie, MC368, e-mail: ilieuwo.ca
Here is a free Python book: How to Think Like a Computer Scientist.
- Rance D. Necaise, Data Structures and Algorithms Using Python, Wiley (2011), ISBN 978-0-470-61829-5.
Download and install the (free) Enthought Canopy Distribution from
There are versions for Windows, OS X and Linux.
The assignment and projects are available on owl.uwo.ca.
(Check also the due dates on owl.)
- Assignment 1 (10%) -- due Feb. 8
- Assignment 2 (15%) -- due Mar. 12
- Assignment 3 (15%) -- due Mar. 29
- Assignment 4 (20%) -- due Apr. 7
- Project 1 (15%) -- due Mar. 1
- Project 2 (25%) -- due Mar. 22
- Tuesday, 11:30am - 1:30pm, P&A106
- Wednesday, 3:30pm - 4:30pm, P&A106
- Wednesday, 4:30pm - 5:30pm, HSB13
- Wednesday, 5:30pm - 6:30pm, HSB13
- Wednesday, 12:30 - 1:30pm, MC368
- The assignments will usually contain a conceptual part and a programming part.
- The conceptual part will consists of a set of exercises related to the material covered in class. The solutions for the exercises should be neatly written or typed.
- All assignments will be made available on the course web site. The availability of assignments will be announced on class and/or via e-mail. Students are responsible for checking their e-mail on a regular basis.
- The programming part require you to write programs related to the data structures and algorithms discussed in lectures.
- To be eligible for full marks, your programming assignments must run on the departmental computing equipment. You may develop assignments on your home computer using an alternative version of the software, but you must allow for the amount of time it will take to get the final product working on Computer Science's machines.
- All programming assignments must be handed in using electronic submission procedures, to be described in class.
Appeals of Assignment Marks
- Appeals of assignment marks should be addressed to the T.A. first. If you and the T.A. cannot agree, then the T.A. will discuss the situation with the lecturer.
- Appeals must occur within 1 week from the first day that the marked assignments were made available to students. After that 1 week period has gone by, no more appeals will be considered.
Each student will be given an account on the Computer Science Department senior undergraduate computing facility, GAUL. In accepting the GAUL account, a student agrees to abide by the department's; Rules of Ethical Conduct.
Adherence to Deadlines
There is no penalty for late submissions up to three days. After that the late work is no longer accepted.
Academic Accommodation for Medical Illness
If you are unable to meet a course requirement due to illness or other serious circumstances, you must provide valid medical or other supporting documentation to your Dean's office as soon as possible and contact your instructor immediately. It is the student's responsibility to make alternative arrangements with their instructor once the accommodation has been approved and the instructor has been informed. In the event of a missed final exam, a "Recommendation of Special Examination" form must be obtained from the Dean's Office immediately. For further information please see:
A student requiring academic accommodation due to illness should use the Student Medical Certificate when visiting an off-campus medical facility or request a Record's Release Form (located in the Dean's Office) for visits to Student Health Services. The form can be found here:
Students who are in emotional/mental distress should refer to Mental Health@Western http://www.uwo.ca/uwocom/mentalhealth/ for a complete list of options about how to obtain help.
Please contact the course instructor if you require material in an alternate format or if you require any other arrangements to make this course more accessible to you. You may also wish to contact Services for Students with Disabilities (SSD) at 661-2111 x 82147 for any specific question regarding an accommodation.
Scholastic offences are taken seriously and students are directed to read the appropriate policy, specifically, the definition of what constitutes a Scholastic Offence, at the following Web site:
Plagiarism: Students must write their essays and assignments in their own words. Whenever students take an idea, or a passage from another author, they must acknowledge their debt both by using quotation marks where appropriate and by proper referencing such as footnotes or citations. Plagiarism is a major academic offence.
If assignments are to be individual assignments: All assignments are individual assignments. You may discuss approaches to problems among yourselves; however, the actual details of the work (assignment coding, answers to concept questions, etc.) must be an individual effort.
The standard departmental penalty for assignments that are judged to be the result of academic dishonesty is, for the student's first offence, a mark of zero for the assignment, with an additional penalty equal to the weight of the assignment also being applied. You are responsible for reading and respecting the Computer Science Department's policy on Scholastic Offences and Rules of Ethical Conduct.
The University of Western Ontario uses software for plagiarism checking. Students may be required to submit their written work and programs in electronic form for plagiarism checking.