This page will be updated regularly. Please visit (and reload) often. You are responsible for all information on this page.

COL 106: Data Structures
(Sem I, 2019-2020)
Tue, Thu, Fri at 11:00-11:50 in LH121
Lab in LHC504, 1-5pm

News & Announcements

Online Resources

Instructor and TA information

Professors: Subodh Kumar
E-mail: s u b o d h @ c s e (
Office:IIA 422
Office hours:Tue, Wed 1215-115, or by appointment (send mail)
Teaching Assistants:


    Name Email Location


Introduction to object-oriented programming through stacks queues and linked lists. Dictionaries; skip-lists, hashing, analysis of collision resolution techniques. Trees, traversals, binary search trees, optimal and average BSTs. Balanced BST: AVL Trees, 2-4 trees, red-black trees, B-trees. Tries and suffix trees. Priority queues and binary heaps. Sorting: merge, quick, radix, selection and heap sort, Graphs: Breadth first search and connected components. Depth first search in directed and undirected graphs. Disjkra's algorithm, directed acyclic graphs and topological sort. Some geometric data-structures.

The language used will be Java. It is expected that you will learn it on your own and will not be covered in any detail class.
Prerequisites: COL100

Tentative Course Schedule: :

Attendance Policy

100% attendance is expected.

Academic Integrity Code

Academic honesty is required in all your work. You must solve all programming assignments entirely on your own, except where group work is explicitly authorised. This means you must not take, neither show, give or otherwise allow others to take your program code, problem solutions, or other work.

You are responsible for protecting your design and code against access by others. (Do not leave it where others can find it. Do not give it to someone for submission on your behalf. Do no use any fragment of code obtained online or from someone else.) Falsifying program output or results is cheating also. If your submission matches code in our database or another submission, you will be penalized as described below.

Students who are caught cheating in an assignment will be given -10 marks in that assignment. Cheating during exams earns -50 marks. A second violation earns an F. Be aware that code analysis tools will be used on every assignment to detect cases of cheating.

Please see your professor if you have any questions about what is permissible.

Assignments & Grading

Work Points Schedule
Assignment 1 4 Due Aug 5
Assignment 2 4 Due Aug 19
Assignment 3 5 Due Sep 11
Assignment 4 5 Due Sep 30
Assignment 5 5 Due Oct 14
Assignment 6 7 Due Nov 9
Participation 10 Through the semester
Minors 11 + 11 TBA
Lab test 15 TBA
Final Exam 23 TBA
To audit-pass the course, a minimum of C is required.

Late policy: You are allowed up to 24 hours of late submission for each assignment, with a penalty of 1 mark. Submissions later than that will not be graded.

Submission Requirements: Assignment submissions will be electronic. You will submit a single ziped file (encoded in b64 format) -- built from assignment directory. You must include a file called README in your directory, describing the implementation of each function and its status (whether it compiles, which tests work, what work remains). Other than that, the directory should contain all your .java files and a makefile and nothing else. Appropriately name submission files (entrynumber_assignment1, entrynumber_assignment2, etc.). All input and output files must stay in the same directory. The script will extract files, compile them and run them on test cases. Make sure your code works on linux with java 1.7 (you should test it in one of the CSC/LHC labs, as announced.) If the script fails to run your code, you will get a 0. If your test results do not match the description in the README file, you will lose 50% of your marks obtained in that assignment. If you do not follow the design given in the assignment, you will lose 25% of the marks obtained.


Goodrich, M. and Tamassia, R. Data Structures and Algorithms in Java , John Wiley and Sons, Inc.

Other books on JAVA:
Java in a nutshell by Flannagan, (O'Reilly)
Introduction to Programming using java by Arnow & Weiss, (Addison-Wesley)