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 submitted electronically (by e-mail) and are usually due at 8pm on the due date. Please see the Assignments page for guidelines and specific due dates.

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.

Labs

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

Monday Wednesday Thursday
Lab
Friday
Week 1: January 18 -- January 21
Martin Luther King Jr's day -- no class
Course Structure.
Intro to Data Structures
Intro to Java: memory model, data types, variables
Reading: Core Ch. 1, 2, 3 (upto string).
Java computing environment.
Java variables.
Stacks, queues
Reading: CLRS 10.1
Week 2: January 24 -- January 28
Working with stacks and queues.
Problem set 1: Stacks, Queues; Java variables, conditionals, loops. Due Monday, Feb. 7th.
Java: objects and methods, conditionals, loops.
Reading: Core, from Ch. 3: upto arrays, skip bitwise operators, enumerated types
Conditionals, loops.
Using objects and methods.
Solving problems using stacks and queues.
Week 3: January 31 -- February 4
Solving problems using stacks and queues.
Java arrays.
Reading: Core Ch. 3 Arrays
Simple Java methods, arrays. Linked lists.
Week 4: February 7 -- February 11
Linked lists, priority queues
Problem set 1 due
Problem set 2: Linked lists, priority queues, heaps; Java methods, arrays. Due Mon., Feb. 21st
Reading: Core Ch. 4, upto Packages (p. 135): you may skip GregorianCalendar example (pp. 102-108) if you find it confusing; skip Static fields and methods (pp. 117 - 120), overloading (p. 127) Calling Another Constructor (p. 131), initialization blocks (pp. 131-134), and 'finalize' method (p. 135)
CLRS: Ch. 6.5 Priority Queues, p. 138 only!
Designing, implementing, and using a class in Java, writing simple methods
Static Fields and methods.
Designing, implementing, and using a class in Java. Linked list implementation
Week 5: February 14 -- February 18
Priority queue
Reading: CLRS Ch. 6.5

Linked lists. Priority queue (implementation)
Week 6: February 21 -- February 25
Problem set 2 due
Review for the midterm.
Midterm exam 1 (in-class) (40 minutes).
Take-home exam 1 given out.
TBA Priority heap implementation.
Week 7: February 28 -- March 4
Binary Search Trees.
String, StringBuffer classes.
Take-home exam 1 is due
Problem set 3: Binary Search Trees. Due Wedn., March 23rd.
String, StringBuffer classes.
Binary search tree implementation.
Week 8: March 7 -- March 11
Inheritance, type casting.
Recursion in java.
Abstract classes, interfaces.
Generic programming.
Recursion. Sorting and searching.
March 14 -- March 18. Spring break -- no class.
Week 9: March 21 -- March 25
Sorting and searching.
More on generic programming.
Problem set 3 due.
Problem set 4: sorting and searching, inheritance. Due Wedn. April 6th.
Java Inheritance. AVL Trees.
Week 10: March 28 -- April 1
AVL Trees.
Java exceptions.
Java exceptions. Hash tables
Week 11: April 4 -- April 8
Hash tables
Multi-dimensional arrays.
Problem set 4 due.
Multi-dimensional arrays. Exam review.
Week 12: April 11 -- April 15
Midterm 2 (in-class) 40 minutes.
Take-home exam 2 given out.
Graphs (introduction) TBA
Graph implementations.
Week 13: April 18 -- April 22
Graph traversals and other graph algorithms.
Take-home exam 2 due
Problem set 5: AVL trees, graphs, hash tables. Due Wedn., May 4th
Graph algorithms. Shortest path. TBA
Minimum spanning trees
Week 14: April 25 -- April 29
Minimum spanning trees
File input/output. File input/output. Networks (introduction).
Week 15: May 2 -- May 6
Solving problems using data structures.
A brief introduction to Java graphical interfaces (swing), events. Swing, Java events. Review for the final and wrap up.
Final exam: 11 am - 1 pm Friday May 13