Difference between revisions of "CISC220 F2023"
(→Schedule) |
(→Schedule) |
||
Line 120: | Line 120: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|1 | |style="background:rgb(102, 204, 255)"|1 | ||
− | |Aug. | + | |Aug. 29 |
|Introduction | |Introduction | ||
|Big four topics on data structures and algorithms: abstraction, implementation, analysis, and applications | |Big four topics on data structures and algorithms: abstraction, implementation, analysis, and applications | ||
Line 134: | Line 134: | ||
|- | |- | ||
|2 | |2 | ||
− | | | + | |Aug. 31 |
|C++ review | |C++ review | ||
|C++ basics: differences with C, arrays, I/O, random numbers, new/delete, static vs. dynamic memory allocation | |C++ basics: differences with C, arrays, I/O, random numbers, new/delete, static vs. dynamic memory allocation | ||
Line 142: | Line 142: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|3 | |style="background:rgb(102, 204, 255)"|3 | ||
− | |Sep. | + | |Sep. 5 |
|C++ review | |C++ review | ||
|ADTs, classes, destructors, constructors, assignments | |ADTs, classes, destructors, constructors, assignments | ||
Line 157: | Line 157: | ||
|- | |- | ||
|4 | |4 | ||
− | |Sep. | + | |Sep. 7 |
|C++ review | |C++ review | ||
|Function & class templates, STL | |Function & class templates, STL | ||
Line 165: | Line 165: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|5 | |style="background:rgb(102, 204, 255)"|5 | ||
− | |Sep. | + | |Sep. 12<br> |
''Register/add deadline''<br> | ''Register/add deadline''<br> | ||
|Stacks | |Stacks | ||
Line 180: | Line 180: | ||
|- | |- | ||
|6 | |6 | ||
− | |Sep. | + | |Sep. 14 |
|Stacks and queues | |Stacks and queues | ||
|Implementing stacks with linear arrays; queue ADT, applications, and linear array implementation | |Implementing stacks with linear arrays; queue ADT, applications, and linear array implementation | ||
Line 187: | Line 187: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|7 | |style="background:rgb(102, 204, 255)"|7 | ||
− | |Sep. | + | |Sep. 19 |
|Queues, deques, and lists | |Queues, deques, and lists | ||
|Circular arrays for queues, singly- and doubly-linked lists for stacks and queues | |Circular arrays for queues, singly- and doubly-linked lists for stacks and queues | ||
Line 201: | Line 201: | ||
|- | |- | ||
|8 | |8 | ||
− | |Sep. | + | |Sep. 21 |
|Trees | |Trees | ||
|Terminology; representation in general case; pre- and post-order traversals; binary trees | |Terminology; representation in general case; pre- and post-order traversals; binary trees | ||
Line 208: | Line 208: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|9 | |style="background:rgb(102, 204, 255)"|9 | ||
− | |Sep. | + | |Sep. 26 |
|style="background:rgb(255, 102, 0)"|LECTURE ON YOUTUBE<br>Trees | |style="background:rgb(255, 102, 0)"|LECTURE ON YOUTUBE<br>Trees | ||
|Binary trees for arithmetic expressions; in-order traversals; binary search trees | |Binary trees for arithmetic expressions; in-order traversals; binary search trees | ||
Line 222: | Line 222: | ||
|- | |- | ||
| | | | ||
− | |Sep. | + | |Sep. 28 |
|style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Instructor away'' | |style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Instructor away'' | ||
| | | | ||
Line 229: | Line 229: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|10 | |style="background:rgb(102, 204, 255)"|10 | ||
− | |Oct. | + | |Oct. 3 |
|Algorithm analysis | |Algorithm analysis | ||
|Big-O notation and common complexity classes; analyzing code to obtain big-O estimates | |Big-O notation and common complexity classes; analyzing code to obtain big-O estimates | ||
Line 243: | Line 243: | ||
|- | |- | ||
|11 | |11 | ||
− | |Oct. | + | |Oct. 5 |
|Balanced binary trees | |Balanced binary trees | ||
|AVL trees: definition, balance notation, rotations | |AVL trees: definition, balance notation, rotations | ||
Line 250: | Line 250: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|12 | |style="background:rgb(102, 204, 255)"|12 | ||
− | |Oct. | + | |Oct. 10 |
|style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Class cancelled'' | |style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Class cancelled'' | ||
| | | | ||
Line 264: | Line 264: | ||
|- | |- | ||
|13 | |13 | ||
− | |Oct. | + | |Oct. 12 |
|Balanced binary trees | |Balanced binary trees | ||
|AVL trees: applying rotations to restore balance property | |AVL trees: applying rotations to restore balance property | ||
Line 271: | Line 271: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|14 | |style="background:rgb(102, 204, 255)"|14 | ||
− | |Oct. | + | |Oct. 17 |
|Midterm review | |Midterm review | ||
| | | | ||
Line 286: | Line 286: | ||
|- | |- | ||
|15 | |15 | ||
− | |Oct. | + | |Oct. 19 |
|MIDTERM | |MIDTERM | ||
| | | | ||
Line 293: | Line 293: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|16 | |style="background:rgb(102, 204, 255)"|16 | ||
− | |Oct. | + | |Oct. 24<br> |
''Withdraw deadline'' | ''Withdraw deadline'' | ||
|Priority queues | |Priority queues | ||
Line 308: | Line 308: | ||
|- | |- | ||
|17 | |17 | ||
− | |Oct. | + | |Oct. 26 |
|Priority queues | |Priority queues | ||
|Finish heap details | |Finish heap details | ||
Line 315: | Line 315: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|18 | |style="background:rgb(102, 204, 255)"|18 | ||
− | | | + | |Oct. 31 |
|Disjoint sets | |Disjoint sets | ||
|Union-find algorithm | |Union-find algorithm | ||
Line 331: | Line 331: | ||
|- | |- | ||
|19 | |19 | ||
− | |Nov. | + | |Nov. 2 |
|Disjoint sets | |Disjoint sets | ||
|Smart union, path compression, maze generation application | |Smart union, path compression, maze generation application | ||
Line 338: | Line 338: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|20 | |style="background:rgb(102, 204, 255)"|20 | ||
− | |Nov. | + | |Nov. 7 |
|Compression | |Compression | ||
|Huffman coding, tries | |Huffman coding, tries | ||
Line 352: | Line 352: | ||
|- | |- | ||
|21 | |21 | ||
− | |Nov. | + | |Nov. 9 |
|Finish compression; maps | |Finish compression; maps | ||
| | | | ||
Line 359: | Line 359: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|22 | |style="background:rgb(102, 204, 255)"|22 | ||
− | |Nov. | + | |Nov. 14 |
|Hashing | |Hashing | ||
|Hash function, probing (linear, quadratic, double hashing), chaining | |Hash function, probing (linear, quadratic, double hashing), chaining | ||
Line 373: | Line 373: | ||
|- | |- | ||
|23 | |23 | ||
− | |Nov. | + | |Nov. 16 |
|Hashing | |Hashing | ||
|Deletions; applications to file integrity verification, password storage | |Deletions; applications to file integrity verification, password storage | ||
Line 380: | Line 380: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"| | |style="background:rgb(102, 204, 255)"| | ||
− | |Nov. | + | |Nov. 21 |
|style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Thanksgiving'' | |style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Thanksgiving'' | ||
| | | | ||
Line 394: | Line 394: | ||
|- | |- | ||
| | | | ||
− | |Nov. | + | |Nov. 23 |
|style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Thanksgiving'' | |style="background:rgb(255, 102, 0)"|NO LECTURE TODAY<br>''Thanksgiving'' | ||
| | | | ||
Line 401: | Line 401: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|24 | |style="background:rgb(102, 204, 255)"|24 | ||
− | |Nov. | + | |Nov. 28 |
|Graphs | |Graphs | ||
|Terminology, applications, representations: adjacency matrix, adjacency lists | |Terminology, applications, representations: adjacency matrix, adjacency lists | ||
Line 415: | Line 415: | ||
|- | |- | ||
|25 | |25 | ||
− | | | + | |Nov. 30 |
|Graphs | |Graphs | ||
|Traversals: depth-first, breadth-first | |Traversals: depth-first, breadth-first | ||
Line 423: | Line 423: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"|26 | |style="background:rgb(102, 204, 255)"|26 | ||
− | |Dec. | + | |Dec. 5 |
|Graphs | |Graphs | ||
|Shortest path: Dijkstra's algorithm | |Shortest path: Dijkstra's algorithm | ||
Line 437: | Line 437: | ||
|- | |- | ||
|27 | |27 | ||
− | |Dec. | + | |Dec. 7 |
|Sorting (abbreviated) | |Sorting (abbreviated) | ||
|Insertion sort, mergesort | |Insertion sort, mergesort | ||
Line 452: | Line 452: | ||
|- | |- | ||
| | | | ||
− | |Dec. | + | |Dec. 12 -- this is past the end of classes |
|Final project demos | |Final project demos | ||
| | | | ||
Line 459: | Line 459: | ||
|- | |- | ||
|style="background:rgb(102, 204, 255)"| | |style="background:rgb(102, 204, 255)"| | ||
− | |Dec. | + | |Dec. 13-17 |
|FINAL EXAM | |FINAL EXAM | ||
− | | | + | |Time and location??? |
| | | | ||
| | | | ||
|} | |} |
Revision as of 13:22, 14 August 2023
Course information
Description | CISC 220 -- Data Structures (Honors) Comprehensive introduction to data structures and algorithms, including their design, analysis, and implementation. Topics include recursion, stacks, queues, lists, heaps, hash tables, search trees, sorting, and graphs. |
Requirements | This is a course for undergraduates who have obstained a grade of C- or better in CISC 181, and have taken or are currently taking CISC 210 and MATH 241. |
Instructor | Christopher Rasmussen E-mail: cer@cis.udel.edu Office: Smith 446 Office hours: Wednesdays, 2:30-4:30 pm |
URL |
Full: http://nameless.cis.udel.edu/class_wiki/index.php/CISC220_F2021 |
TA |
Emma Adelmann, E-mail: eadel@udel.edu, office hours: 5-6 pm on Mondays, 1-2 pm on Thursdays in Smith 102A |
Schedule | Lectures are Tuesdays and Thursdays 9:30 am to 10:45 am in ISE 305, all labs are Wednesdays 4:40 pm to 5:30 pm in Smith 040 (basement). In the schedule below note that there is NOT a lab every week |
Grading |
Your labs and programming projects are due by midnight of the deadline day (with a small grace period afterward). All should be submitted directly to Canvas--e-mail submissions will not be accepted. A late homework is a 0 without a valid prior excuse. To give you a little flexibility, you have 6 "late days" to use over the semester to extend the deadline by one day each without penalty. No more than two late days may be used per assignment. Late days will automatically be subtracted, but as a courtesy please notify the instructor and TA in an e-mail of your intention to use them before the deadline. Students can discuss problems with one another in general terms, but must work independently on all assignments. This also applies to online and printed resources: you may consult them as references (as long as you cite them), but the words you turn in must be yours alone. Any quoting must be clear and appropriately cited. The University's policies on academic dishonesty are set forth in the student code of conduct here. For the overall course grade, a preliminary absolute mark will be assigned to each student based on the percentage of the total possible points they earn according to the standard formula: A = 90-100, B = 80-90, C = 70-80, etc., with +'s and -'s given for the upper and lower third of each range, respectively. Based on the distribution of preliminary grades for all students (i.e., "the curve"), the instructor may increase these grades monotonically to calculate final grades. This means that your final grade can't be lower than your preliminary grade, and your final grade won't be higher than that of anyone who had a higher preliminary grade. I will try to keep you informed about your standing throughout the semester. If you have any questions about grading or expectations at any time, please feel free to ask me. |
Textbook |
Data Structures and Algorithms in C++ (4th ed.), Adam Drozdek. It is NOT at the textbook store, don't look for it there
Code examples from the book can be downloaded here |
University Covid policy | Student learning can only occur when students and their instructors feel safe, respected, and supported by each other. To ensure that our learning environment is as safe as possible, and in
keeping with CDC guidelines to slow the transmission of COVID-19 and the University of Delaware’s Return to Campus Guidelines (Health and Safety Section), we will adhere to the practice of wearing face masks and cleaning your seat and desk area at the beginning of class. This means that you:
As necessary, the University may announce modifications to these practices. In that event, these guidelines will be updated to reflect those modifications. |
Schedule
Note: The blue squares in the "#" column below indicate Tuesdays. Tan rows are lab days (Wednesdays). All lectures (except YouTube posts) should be available on UDCapture
2023-2024 UD academic calendar
# | Date | Topic | Notes | Readings | Links |
---|---|---|---|---|---|
1 | Aug. 29 | Introduction | Big four topics on data structures and algorithms: abstraction, implementation, analysis, and applications | Drozdek 1.1-1.3 |
|
Sep. 1 | LAB #1 | ||||
2 | Aug. 31 | C++ review | C++ basics: differences with C, arrays, I/O, random numbers, new/delete, static vs. dynamic memory allocation | C vs. C++ C++ for Java programmers cheat sheets: [1], [2] cplusplus.com tutorial: Basics, Program Structure, Compound Data Types |
|
3 | Sep. 5 | C++ review | ADTs, classes, destructors, constructors, assignments | Drozdek 1.4 (skip 1.4.5) |
cplusplus_2a.tar |
Sep. 8 | LAB #2 | ||||
4 | Sep. 7 | C++ review | Function & class templates, STL | Drozdek 1.7-1.8 |
template_test, anythingcell |
5 | Sep. 12 Register/add deadline |
Stacks | ADT (including STL) and applications, including stacks for postfix expression evaluation | Drozdek 4-4.1 | |
Sep. 15 | LAB #3 | ||||
6 | Sep. 14 | Stacks and queues | Implementing stacks with linear arrays; queue ADT, applications, and linear array implementation | Drozdek 4.1, 4.2 | array_stack, array_queue |
7 | Sep. 19 | Queues, deques, and lists | Circular arrays for queues, singly- and doubly-linked lists for stacks and queues | Drozdek 3-3.2, 3.7, 3.8, 4.2, 4.4, 4.5 | sll_stack |
Sep. 22 | NO IN-PERSON LAB THIS WEEK -- BUT LAB #4 ASSIGNED | ||||
8 | Sep. 21 | Trees | Terminology; representation in general case; pre- and post-order traversals; binary trees | Drozdek 6-6.2, 6.4-6.4.2 | |
9 | Sep. 26 | LECTURE ON YOUTUBE Trees |
Binary trees for arithmetic expressions; in-order traversals; binary search trees | Drozdek 6.3, 6.5-6.6 (skip 6.6.1), 6.12 (expression trees) | recording |
Sep. 29 | NO IN-PERSON LAB THIS WEEK -- BUT LAB #5 ASSIGNED | ||||
Sep. 28 | NO LECTURE TODAY Instructor away |
||||
10 | Oct. 3 | Algorithm analysis | Big-O notation and common complexity classes; analyzing code to obtain big-O estimates | Drozdek 2-2.3, 2.5-2.6, 2.7 | |
Oct. 6 | LAB #6 | ||||
11 | Oct. 5 | Balanced binary trees | AVL trees: definition, balance notation, rotations | Drozdek 6.7-6.7.2 (skip 6.7.1) | Rotation applet |
12 | Oct. 10 | NO LECTURE TODAY Class cancelled |
|||
Oct. 13 | LAB #7 | ||||
13 | Oct. 12 | Balanced binary trees | AVL trees: applying rotations to restore balance property | Drozdek 6.7-6.7.2 (skip 6.7.1) | UD Capture is audio only today :( |
14 | Oct. 17 | Midterm review | Midterm review slides |
2010 midterm (ignore questions 2 and 6) | |
Oct. 20 | NO LAB THIS WEEK | ||||
15 | Oct. 19 | MIDTERM | |||
16 | Oct. 24 Withdraw deadline |
Priority queues | ADT, heap implementation | Drozdek 4.3, 4.6, 6.9 | STL PQ example |
Oct. 27 | NO LAB THIS WEEK | ||||
17 | Oct. 26 | Priority queues | Finish heap details | ||
18 | Oct. 31 | Disjoint sets | Union-find algorithm | Drozdek 8.4.1 Wikipedia entry, UW slides (first 5 pages of PDF) |
|
Nov. 3 | LAB #8 | ||||
19 | Nov. 2 | Disjoint sets | Smart union, path compression, maze generation application | ||
20 | Nov. 7 | Compression | Huffman coding, tries | Drozdek 11-11.2 (skip 11.2.1) | |
Nov. 10 | LAB #9 | ||||
21 | Nov. 9 | Finish compression; maps | Drozdek, 7.1.10 | STL map example | |
22 | Nov. 14 | Hashing | Hash function, probing (linear, quadratic, double hashing), chaining | Drozdek 10-10.2.2 | |
Nov. 17 | NO IN-PERSON LAB THIS WEEK -- BUT LAB #10 ASSIGNED | ||||
23 | Nov. 16 | Hashing | Deletions; applications to file integrity verification, password storage | Drozdek 10.3 Illustrated Guide to Cryptographic Hashes |
Project assigned |
Nov. 21 | NO LECTURE TODAY Thanksgiving |
||||
Nov. 24 | NO LAB THIS WEEK | ||||
Nov. 23 | NO LECTURE TODAY Thanksgiving |
||||
24 | Nov. 28 | Graphs | Terminology, applications, representations: adjacency matrix, adjacency lists | Drozdek 8-8.1 | slides |
Dec. 1 | NO LAB THIS WEEK | ||||
25 | Nov. 30 | Graphs | Traversals: depth-first, breadth-first | Drozdek 8.2, 8.3 (stop after Dijkstra's) Optional: Path-finding tutorial (stop at "Heuristic search") |
slides |
26 | Dec. 5 | Graphs | Shortest path: Dijkstra's algorithm | ||
Dec. 8 | NO LAB THIS WEEK | ||||
27 | Dec. 7 | Sorting (abbreviated) | Insertion sort, mergesort | Drozdek 9.1.1, 9.3.4 Optional: Sorting algorithms animated |
|
28 | Final review on YouTube | Final review slides Post-midterm lecture notes |
recording (with solutions to 2010 final linked below) 2010 final (ignore Q4 and Q5, but see Q2 on 2010 midterm) | ||
Dec. 12 -- this is past the end of classes | Final project demos | Project due | |||
Dec. 13-17 | FINAL EXAM | Time and location??? |