CSci 2101 Data Structures.

[Home] [Syllabus] [Labs] [Assignments] [Resources] [CSci 2101 Wiki page]

Syllabus

The syllabus below is somewhat approximate. Dates, topics, assigned reading, and problem set due dates are subject to change. All changes in assigned reading and due dates will be announced in class (and occasionally by e-mail). While I will do my best to update the web site accordingly, it is a student's responsibility to keep track of the problem set due dates and reading assignments. If you are not sure about due dates, please don't hesitate to ask.

Note that the date for the midterm exams are set and will not change. If you have a conflict with this date, please let me know right away.

Reading sources (see the 2101 home page for complete references):

If you are not sure about the source of reading, please ask right away.

You are welcome to use other textbooks and/or online materials. If such materials made a substantial contribution to your homework assignment, please acknowledge the source and the exact contribution. If you plan to use extra sources for an in-class or a take-home exam, please get my OK first. Otherwise such a use would be considered cheating.

Problem sets are due in the beginning of the class on the due date. If a problem set is submitted at (or before) the next class meeting after the due date, it is graded out of 3/4 credit. If it is submitted any time after the next meeting (until the last class meeting), then it is graded out of 1/2 credit.
Problem sets submitted more than 2 minutes after beginning of the class are considered late.

A take-home exam must be submitted on time, otherwise it will not be graded.

Individual vs. group assignments.

Homework assignments are individual work, unless specified otherwise. If collaboration on an assignment is allowed, you must follow these rules:

Labs

Lab assignments and submission instructions are posted on the Lab web page.

Monday Wednesday Thursday
Lab
Friday
Week 1: August 30 -- September 3
Course Structure.
Intro to Data Structures
Intro to Java
Reading: Core Ch. 1, 2.
Java: memory model, data types, variables
Reading: Core, from Ch. 3: upto strings, skip bitwise operators, enumerated types; read Input/Output.
Problem set 1: Stacks, Queues; Java variables, conditionals, loops. Due Wedn., Sept. 15th
Java computing environment.
Java variables.
Stacks, queues
Reading: CLRS 10.1
Week 2: September 6 -- September 10
Labor Day Holiday -- no class Java: conditionals, loops.
Objects and methods.
Reading: Ch. 3 strings, control flow (upto Arrays); examples on resources page.
Conditionals, loops.
Using objects and methods.
Solving problems using stacks and queues.
Week 3: September 13 -- September 17
Linked lists.
Algorithm analysis (arrays, different types of linked lists)
Reading: CLRS 10.2
Writing simple Java methods.
static methods.
Java arrays.
Reading: Core Ch. 3 Arrays, Ch. 4 Static Fields and methods.
Problem set 1 due
Problem set 2: Linked lists, priority queues, heaps; Java methods, arrays. Due Wedn., Sept 29th
Simple Java methods, arrays. Heaps, Priority queues.
Week 4: September 20 -- September 24
Trees, Binary Search Trees. Designing, implementing, and using a class in Java.
Reading: Core Ch. 4 (except Packages)
Designing, implementing, and using a class in Java. Binary Search Trees and heaps.
Week 5: September 27 -- October 1
Algorithms for sorting and searching.
Mutable/immutable objects.
Arrays of primitive types and of objects.
Problem set 2 due
Problem set 3: sorting and searching; designing classes. Due Fri., Oct 15th
Reading data from a keyboard. Java classes String, StringBuffer. Searching and sorting arrays of objects. Algorithm efficiency, big-Oh notation (review). Comparison of sorting algorithms.
Week 6: October 4 -- October 8
Midterm exam 1 (in-class) (40 minutes).
Take-home exam 1 given out.
Inheritance, type casting. Inheritance. Sorting and searching.
Week 7: October 11 -- October 15
Sorting and searching.
Take-home exam 1 is due
Abstract classes, interfaces.
Generic programming.
Writing generic sorting routines. AVL Trees, 2-3 Trees, AA Trees. Problem set 3 due.
Week 8: October 18 -- October 22
Fall break -- no class.
AVL Trees, 2-3 Trees, AA Trees. Problem set 4: inheritance; generic sorting routines. Due Wedn., Nov. 3rd Working with Java libraries and APIs. AVL Trees, 2-3 Trees, AA Trees.
Week 9: October 25 -- October 29
AVL Trees, 2-3 Trees, AA Trees.
Handling Java exceptions, working with files.
Handling Java exceptions, working with files. Hash tables
Week 10: November 1 -- November 5
Hash tables
Multi-dimensional arrays.
Problem set 4 due.
Problem set 5: trees (AVL, 2-3, AA), hash tables. Due Friday, Nov. 12th
Multi-dimensional arrays. Graph traversals.
Week 11: November 8 -- November 12
Graphs
Graphs implementation. Graphs implementation. Graph algorithms.
Problem set 5 due.
Week 12: November 15 -- November 20
Minimum spanning trees.
Exam review.
Midterm 2 (in-class) 40 minutes.
Take-home exam 2 given out.
Java applets, graphics.
Minimum spanning trees.
Week 13: November 22 -- November 26
Shortest path.
Shortest path.
Take-home exam 2 due
Problem set 6: graphs, solving problems using data structures. Due Wedn., Dec 15th
Thanksgiving -- no lab
Thanksgiving -- no class
Week 14: November 29 -- December 3

Solving problems using graphs.
Networks (introduction). Java questions (please send me your questions beforehand!) Solving problems using data structures.
Week 15: December 6 -- December 10
Solving problems using data structures.
A brief introduction to Java interfaces (swing), events. Swing, Java events. Solving problems using data structures.
Week 16: December 13 -- December 15
Catch up and discussion.
Last day of classes
Review and wrap up.
Problem set 6 due
Final exam: 8:30-10:30am Mon., Dec 20