AdamZeng1 / data-structures-uiuc

🌳 CS225: Data Structures

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CS225: Data Structures in UIUC

Please read Academic Integrity first before using this repository, SERIOUSLY.

Table of contents

Course Theme

This course teaches a variety of ways to store collections of data in a computer program and discusses the advantages and disadvantages associated with the different methods. You will learn how to build various data-storage structures, and you’ll discover why you might prefer one over another in a particular situation. The combined arts of design, analysis and justification are the substance of the class.

The first 3–4 weeks of the course will be a crash-course in some C++. We will cover many of the major ideas of the language, and you will have had a great deal of practice with its features by the end of the semester. Our focus will be on those features that introduce computing concepts that may be new to you - most prominently, generic programming, object-oriented programming, and manual memory management.

While this is not a C++ course, keeping up with the class during the C++ portion will be important to your success later on, where the focus will shift from how to do things in C++ to what to do. In order to communicate these ideas for MPs and exams, you’ll need to be familiar with C++. Also, the first assessments will cover primarily C++ topics. That said, knowing C++ alone is not sufficient to do well in CS 225 - if you’re already familiar with C++, we encourage you to learn ahead and make sure you follow along with the data structure discussion later.

Prerequisites

  • CS 125: Introduction to Computer Science
    • Programming basics
    • Programming structures (methods/functions)
    • Object-based programming (classes and encapsulation)
    • Recursion
    • Algorithm analysis
    • Linear search and binary search
    • Sorting algorithms
  • ECE 220: Intro to Computing Systems
    • Programming basics (in C)
    • Programming structures (methods/functions)
    • Pointers
    • Recursion
  • CS 173 or Math 213: Discrete Mathematics
    • Order of growth ("Big-O Notation")
    • Recurrences
    • Proof by induction
    • Set definitions/terminology/facts
    • Tree definitions/terminology/facts
    • Graph definitions/terminology/facts
    • Relations and equivalence relations

See also the FAQ about prerequisites.

Extra credit

There is an opportunity for significant extra credit in this course. Points for extra credit work will be assigned after grade cutoffs are determined, so they are a true bonus to your score. The total amount of extra credit you can earn is capped at 100 points, or one letter grade.

MP extra credit via early submission

All MPs except MP1 are broken into two parts. The first part can be submitted early for up to +7 extra credit points. The result of consistent early submission is +42 points toward your final course score, or nearly half a letter grade.

Partial extra credit is available; if you score an 80% on an early submission, you will get 80% of the extra credit weight extra credit. (eg: +7 * 80% = +5.6)

Lab extra credit

Your overall lab score is computed out of a maximum of 100 points; anything you earn above 100 points is counted as extra credit.

Problems of the Day (POTD)

Beginning in approximately a week and continuing every weekday through the end of the semester we will give you a small programming problem to download, solve, and upload. These exercises are designed to mimic the environment and scope of coding problems you will see on midterms. They will be distributed and collected via PrairieLearn. Each POTD is worth +1 extra credit point, to a maximum of +40 points.

MPs and Labs

Machine Problems

There will be 7 machine problems (MPs). They are of increasing difficulty and sophistication, and we consider them to be the meat and cheese of the course.

The MPs you will be doing in this class will serve many purposes:

  • They are designed to give you substantial practice with the C++ syntax you learn in class.
  • They are an exercise in the software development cycle.
  • They are an exercise in attention to detail, as there is not much partial credit given on the MPs.
  • They are an exercise learning to use the tools available to you to help you work more efficiently and to check the quality of your work.
  • You are given approximately two weeks for each MP (after MP1, which is just 1 week). Exact MP due dates will be announced in lecture and on the MP specification page.

MPs

Assignment Due (Extra Credit) Due (Final)
MP 7: Mazes April 23 April 30
MP 6 - Debugging: Useful Tools for Life April 9 April 16
MP 5: PhotoMosaic March 26 April 2
MP 4: Flood Fill March 5 March 12
MP 3: Images and Lists February 19 February 26
MP 2: Images and Stickers February 5 February 12
MP 1: Image Manipulation January 29

Lab Meetings

There will be approximately 14 lab sections during the semester, each of which consists of a small intro and a lab exercise. See the top of this page for meeting times and locations. Lively discussion and collaboration with course staff and fellow students during the 2 hour labs should usually (but not always) result in significant progress toward finishing the exercise.

The purpose of labs is to help improve your programming abilities and reinforce concepts taught in lecture. Exact lab formats may change week-to-week, but a usual lab will consist of about 20 minutes of discussion over the material covered in lecture and about 90 minutes of collaborative coding.

Lab sections are each worth 10 points each.

Lab assignments will be released for all students before 7pm on Wednesday, and will be due the following Sunday at 11:59pm.

Labs

Lab Due
lab_ml: Lazy Machine Learning April 29
lab_graphs: Gory Graphs April 22
lab_puzzles: Devious Dictionaries: Cleverness Through Association April 15
lab_heaps: Precarious Priority Queues April 8
lab_hash: Hellish Hash Tables April 1
lab_btree: Belligerent BTrees March 27
lab_avl: Awful AVL Trees March 11
lab_huffman: Hazardous Huffman Codes March 4
lab_trees: Tempestuous Trees February 25
lab_quacks: Spiteful Stacks and Questionable Queues February 18
lab_inheritance: Insidious Inheritance February 11
lab_memory: Malevolent Memories February 4
lab_debug: Disastrous Debugging January 28
lab_intro: Ineluctable Introduction January 21

Academic Integrity

For a more detailed description of our Academic Integrity Policy, please see Academic Integrity. You are responsible for the content there, but as an overview:

  • You may NOT reference any code outside of that provided in lecture and the textbook, or receive help from ANYONE outside of course staff or your credited partner.
  • Only on labs and when explicitly specified on certain MPs, you may work with a partner who must be currently taking the course.
  • Your turned in work must be your own product, representing your own knowledge. Any form of cheating is unacceptable.

About

🌳 CS225: Data Structures


Languages

Language:C++ 99.1%Language:Python 0.6%Language:Makefile 0.3%Language:C 0.0%