EECS 233 is an introductory course in computer science. Its primary objective is an introduction to various methods of organizing large amounts of data, and basic analysis of algorithms that use these methods. The course will cover linked lists, stacks and queues, hashing, searching and sorting, some trees and basics of graphs. Simple analysis of algorithms are also required for hashing, searching, sorting, etc. Java or C++ programming languages will be used for lectures and assignments.
ENGR 131, knowledge of Java or C++ programming.
Only one of the following two books:
Data Structures and Algorithm Analysis in Java (Second Edition), by Mark Allen Weiss, Addison-Wesley, ISBN: 0-321-37013-9, 2006.
Data Structures and Algorithm Analysis in C++ (Third Edition), by Mark Allen Weiss, Addison-Wesley, ISBN: 0-321-44146-X, 2006.
Instructor: Shudong Jin (Email: jins@case.edu)
Lecture time: Tuesday & Thursday, 2:45-4:00pm; Location: White 411
Office hours: Tuesday & Thursday, 4:00-5:15pm; Office: Olin 502
Teaching assistants: Tu Ouyang
Lectures will be given twice each week. Students are required to attend the lectures and to be responsible for all the materials covered in class. Classes missed due to reasons other than medical conditions may not be made up.There will be four programming assignments that involve various data structures. The students will have two weeks to complete each assignment. Students should use electronic submission. We will use software system to detect code copying. Assignments are usually due in the middlenight on the due day. Late submission of assignements is acceptable (if no more than five days after the due day), but the grade will be discounted 10% per day.
There will also be four written programming assignments. The students will have one week to complete each assignment.
There will be one midterm exam (right before the Spring break) and one final exam. Approximately 4 weeks into the semester, there will be an early quiz too. The purpose of this quiz is for the instructor to better know the progress of the class (so that the exams and assignments are more appropriately constructed).
Programming assignments: 25%
Written assignments: 15%
Early quiz: 10%
Midterm exam: 20%
Final exam: 30%
More information (handouts, assignments/solutions, readings) on Blackboard
Week 1 (1/16, 1/18): Course overview, object-oriented programming
Week 2 (1/23, 1/25): Basics of recursion, algorithm analysis and big O; Written assignment #1
Week 3 (1/30, 2/01): Linked list; Programming assignment #1
Week 4 (2/06, 2/08): Stacks and queues, quiz
Week 5 (2/13, 2/15): Tree data structure and binary trees; Written assignment #2
Week 6 (2/20, 2/22): More trees; Programming assignment #2
Week 7 (2/27, 3/01): Heaps and priority queues
Week 8 (3/06, 3/08): Basics of sorting, heap-sort, midterm exam
Week 9 (3/13, 3/15): Spring Break
Week 10 (3/20, 3/22): Hashing; Written assignment #3
Week 11 (3/27, 3/29): Various sorting algorithms; Programming assignment #3
Week 12 (4/03, 4/05): Various sorting algorithms
Week 13 (4/10, 4/12): State-space search, basic of graphs; Written assignment #4
Week 14 (4/17, 4/19): Graph representation and shortest-path algorithms; Programming assignment #4
Week 15 (4/24, 4/26): Minimum spanning tree, review for final exam
May 3: Final exam