CS331 DATA STRUCTURES AND ALGORITHMS - SPRING 2024 Matthew Bauer [email protected]
Lecture Mon/Wed 8:35-9:50am - RE104 Lab Fri 9-9:50am - SB108,SB112F/E Office Hours: Post questions to Discord cs331
TAs: Parth Patel [email protected] Christopher Mocha [email protected] Sun 10am-noon Discord cs331
Jonathan Raynor [email protected] Fri 3-5pm
Textbooks (online): Problem Solving With Algorithms and Data Structures Using Python, Python Tutorial, Python Doc
See https://moss.cs.iit.edu/cs331/bauer/ for lecture materials.
Computing Resources: All assignments will be distributed and submitted via GitHub Classroom. You should also install your own local Jupyter Notebook
Catalog Description: Implementation and application of the essential data structures used in computer science. Analysis of basic sorting and searching algorithms and their relationship to these data structures. Particular emphasis is given to the use of object-oriented design and data abstraction in the creation and application of data structures. Prerequisite: CS116 or CS201
Course Objectives: Students should be able to:
1. Design and implement data structures based on the following abstract data types: lists, stacks, queues, priority queues, sets, maps, trees.
2. Understand which data structures to use, and how to apply them to a variety of problems.
3. Analyze the asymptotic runtime complexity of common search/sort algorithms, and others used in the implementation of data structures.
4. Design and implement recursive functions.
5. Understand the utility of object-orientation in the implementation of sophisticated data types and APIs.
6. Identify aspects in the design and implementation of data structures that play a role in secure computing.
7. Practice test-driven development.
Attendance: In-person attendance is required for all lectures, labs, and exams. In case of illness or emergency, you must contact me before the lecture, lab, or exam for an excused absence and I will provide materials on the content you miss. There is a limit of 3 excused absences for lectures/labs over the term. No materials are provided by me for unexcused absences. Since there is no internet section, lecture recordings are not available in general. If you have an unexcused absence for a lab, your lab score will be reduced by 50% when the lab is submitted.
Lectures: Pre-reading the textbook is essential to success. Download starter notebooks before class. Lectures will consist of lots of interactive demos. Completed notebooks are always posted.
Lecture Participation: To earn the 5 lecture participation points, students are expected to be prepared and to actively participate in lecture, either by asking or answering questions (please say your name clearly to get credit), or when called upon randomly. Students can expect to be called on, or volunteer, once every 3 weeks. I will post updated lecture participation points on Blackboard after each exam. Up to 5 optional participation points can be earned up to end of the last week if classes by asking questions via Discord (please include your name in the post). Optional Participation points will reduce the dependence on exams for your final grade but will not replace the 5 lecture participation points. Extra Participation Details
Laboratories: There are 10 labs, and they are always due at midnight on Sunday night. Labs will be accessed, completed, and submitted via GitHub Classroom. Labs have different point totals and are therefore not equally weighted. One-day extensions (limited to 3 over the term) can be granted if you contact me before the submission deadline.
Assignments: Lecture Participation-5%, 10 Labs-30%, 3 Exams-65% A=90-100 B=80-89 C=70-79 D=60-69 E=0-59
No extra credit. Students with unexcused absences that are close to a letter grade boundary will receive the lower grade. Exams will be individual work, closed book, closed notes, no electronic devices, no questions answered, no bathroom breaks, and assigned seats. See Prof. Lee’s www page for an old exam catalog.
Ethics: Any behavior on any homework, lab, or exam that could be considered copying or cheating will result in a zero on the assignment for all parties involved and will be reported to [email protected]. See the IIT Code of Academic Honesty https://web.iit.edu/student-affairs/handbook/fine-print/code-academic-honesty
Reasonable accommodation will be made for students with documented disabilities. To receive accommodations, students must obtain a letter of accommodation from the Center for Disability Resources (CDR) located at 3424 S. State Street - 1C3-2, 312 567.5744 or [email protected]
Illinois Tech’s Sexual Harassment and Discrimination Information: Illinois Tech prohibits all sexual harassment, sexual misconduct, and gender discrimination by any member of our community. This includes harassment among students, staff, or faculty. Sexual harassment of a student by a faculty member or sexual harassment of an employee by a supervisor is particularly serious. Such conduct may easily create an intimidating, hostile, or offensive environment. Illinois Tech encourages anyone experiencing sexual harassment or sexual misconduct to speak with the Office of Title IX Compliance for information on support options and the resolution process. You can report sexual harassment electronically at iit.edu/incidentreport, which may be completed anonymously.
You may additionally report by contacting the Title IX Coordinator, Virginia Foster at [email protected] or the Deputy Title IX Coordinator at [email protected]. For confidential support, you may reach Illinois Tech’s Confidential Advisor at (773) 907-1062. You can also contact a licensed practitioner in Illinois Tech’s Student Health and Wellness Center at [email protected] or (312)567-7550. For a comprehensive list of resources regarding counseling services, medical assistance, legal assistance and visa and immigration services, you can visit the Office of Title IX Compliance website at https://www.iit.edu/title-ix/resources.
Communication is critical to the success and satisfaction of the learning experience. Please email me about any class issues.
Week |
Monday (Lecture) |
Wednesday (Lecture) |
Friday (Lab) |
1-1/8 |
Read PythonDS Introduction 1.1-1.17 Read Python tutorial, ch 1-5, 9 Course Overview/Syllabus, Language Intro |
Language Intro
|
Lab 00 Preliminaries due midnight, Sunday 1/21 |
2-1/15 |
Language Intro No School - pre-recorded lecture (xx:xx) |
Language Intro |
Lab 01 Basic Python due midnight, Sunday 1/28 |
3-1/22
|
Language Intro |
Language Intro |
Lab 02 Iocane due midnight, Sunday 2/4 |
4-1/29 |
Read PythonDS Analysis 3.1-3.11 Searching, Sorting, and Timing |
Searching, Sorting, and Timing Runtime Complexities video (26:00) |
Lab 03 Ngrams due midnight, Sunday 2/11 |
5-2/5 |
Array-backed lists |
Iterators |
Lab 04 Arraylist due midnight, Thursday 2/15 |
6-2/12 |
Read PythonDS 4.19-4.21 Linked structures |
Linked lists |
EXAM 1 (covers labs 01-04) |
7-2/19 |
Read PythonDS 6.5 Hashing and Hashtables |
Hashing and Hashtables |
Lab 05 LinkedList due midnight, Sunday 3/3 |
8-2/26
|
Read PythonDS 4.3-4.12 Stacks and Queues |
Stacks and Queues |
Lab 06 Hashtable due midnight, Sunday 3/10 |
9-3/4 |
Read PythonDS 7.8-7.10 Priority Queues (and Heaps) |
Priority Queues (and Heaps) |
Lab 07 Stacks & Queues due midnight, Sunday 3/24 |
10-3/18 |
Read PythonDS 5.1-5.17 On Recursion |
On Recursion |
Lab 08 Heaps due midnight, Sunday 3/31 |
11-3/25 |
On Recursion |
Binary Search Trees |
Lab 09 Recursion due midnight, Sunday 4/14 |
12-4/1 |
Read PythonDS 7.11- 7.14 BSTree data structure |
BSTree data structure |
EXAM 2 (covers labs 05-08) |
13-4/8 |
BSTree data structure |
Read PythonDS 7.15-7.18 Balanced BSTree: AVL Tree |
Lab 10 BSTree due midnight, Sunday 4/21 |
14-4/15 |
Balanced BSTree: AVL Tree |
Balanced BSTree: AVL Tree |
Lab 10 BSTree due midnight, Sunday 4/21 |
15-4/22 |
Balanced BSTree: AVL Tree |
No Lecture |
No Lab |
Final’s |
EXAM 3 (covers labs 09-10, AVL) day/time/room TBA |
|
|