CS225
CS225 (Data Structures) is a 4-credit hour course that is specifically required for CS majors and CEs and qualifies as a 3 of 5 technical elective for EEs. It is offered in both the fall and spring.
Content Covered
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 class assumes basic skills programming in C++. The course will not review the language, but the first MP will mostly be a refresher.
Topics
- Math concepts and basic boolean logic
- Big-O
- Data structures
- Trees and linked lists
- Search algorithms
- Sorting algorithms
- Image manipulation
Prerequisites
CS225 has two main prerequisites, one being a programming course and one being a discrete structures theory course. CS128 is typically taken by CS students and ECE 220 is typically taken by ECE students to satisfy the prerequisites. Either CS173 or MATH213 is recommended to satisfy the discrete math prereq. Both programming and theory are used fairly heavily in the class, so both should be taken beforehand.
When to Take it
For EE students using this class as one of the 3 out of 5 courses, it doesn't really matter when CS 225 is taken. However, for CompE and CS students, this class is much more important as it is the gateway to many upper level ECE and CS courses. CS 225 should be taken soon after taking ECE 220, and as mentioned earlier, taken after Discrete Math. Generally, most EE and CompE students will take this class during their second semester of their sophomore year, but many also take it during the first semester. To take CS225 first semester sophomore year, it is easier to use MATH213 as a prerequisite since MATH213 doesn't have a CS124 or ECE220 prerequisite, unlike CS173. With the emphasis placed on using software for a variety of work in ECE, this is a fundamental course and will benefit EEs seeking to strengthen their programming skills. Another reason to take this class early is so the student will have an advantage if applying for internships related to software development.
Course Structure
Lecture
CS225 has 3 lecture videos per week which are recorded and posted on the course website (Mediaspace). Aside from this, the slide notes and TA notes are sometimes posted for your own review.
MPs and Labs
CS225 has Machine Projects typically due biweekly instead of homework. There are usually 6 machine projects which revolve around programming the data structures you learn in lecture. They give practice in C++ and debugging, usually taking 15-20 hours in total. Exact MP due dates will be announced in lecture and on the MP specification page.
CS225 also has around 12 labs which are smaller weekly programming questions. They have in person meetings which are optional, but often contain a smaller intro to the lab and allow you to make groups to work on the labs. Each of the labs can be worked on with a group up to 10 people, and can be submitted as many times as you want before the due date on PrairieLearn. 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 assignments will be released for all students before the first lab on Wednesday, and will be due the following Sunday at 11:59pm.
Exams
CS225 has 6 smaller exams and a final, with the smaller exams being 50 minutes long and the final being 110 minutes long. They typically consist of a few multiple choice and short answer questions, and one programming question. All of the exams are taken through the CBTF, and so are scheduled through their website.
Grading
Category | Contribution | Notes |
---|---|---|
Programming Assignments | 360 points | 60 points each |
Laboratory Assignments | 120 points | 10 points each |
Exams | 360 points | 60 points each |
Final Exam | 160 points | |
Total | 1000 points |
Extra Credit (capped at 100 points) | |
---|---|
Early MP submission | 40 points |
Problem of the Day | 40 points |
Final Project | Up to 60 points |
Instructors
Currently, Carl Evans is the primary Instructor for CS 225 with Brad Solomon teaching the CS225 Honors Section of the Course.
Course Tips
CS225 often offers extra credit for submitting a part of the MP early. This can be very useful for increasing your grade and is relatively easy if you start early on the MPs. Starting early and working at a steady pace for this class can be very helpful in ensuring your success, as leaving the MPs for the last day or few days can be a large task.
Another source of extra credit in CS225 is the Problem of the Days, which are assigned daily on PrairieLearn starting the second week. Each problem completed counts as 1 point of extra credit. These can be extremely useful to learn the C++ syntax, especially for ECE students who only had a few weeks to learn C++ in ECE220.
A group final project is offered for extra credit at the end of the semester. Projects utilize algorithms and data structures covered in the class, and exact details and requirements are posted towards the end of the semester.
Use of GDB is HIGHLY recommended because it assists with debugging memory errors, i.e. segmentation faults. ECE 220 does not introduce GDB alongside pointers/memory manipulation and does not place any special emphasis on its use aside from saying 'it's useful' which leads to a lot of students forgetting GDB even exists. Becoming proficient early in GDB can be extremely useful in debugging the later MPS.
Life After
CS225 is a prerequisite to many higher level ECE and CS courses, including CS374A and other high level tech electives. In addition to this, many students looking towards software development as a possible career will find that the concepts learned from this class will help greatly in competing for internships in this field. Many programming interviews will include concepts from this class, so taking it earlier can be considered very beneficial to those wanting to go into software development.``
Infamous Topics
- Algorithms: The algorithms gone over in CS225 are utilized many times in later courses. CS374A goes further in depth into these, and shows how to prove certain algorithms are better than others.
- Debugging in C++: Feeling confident in your debugging skills is a large part of becoming a good programmer. Carrying good debugging skills into further classes will help you complete assignments and understand code easily.
- Big-O Notation: Understanding why certain algorithms are used is often important in software interviews, so it is important to see how to analyze your code in this way.
Resources
- C++ Reference Website: Contains information about the C++ standard library, which is often utilized in CS225 MPs.
- C++ Tutorials: Has easy to follow tutorials, which can help you feel confident in C++ or can be used to refresh your knowledge.