Welcome to my CSE 2050 repository! This repo contains my projects, demos, and code files for the Data Structures and Object-Oriented Design course in Spring 2024. The focus is on mastering Python 3, building a solid understanding of core data structures, and applying object-oriented programming principles.
- Course Title: CSE 2050 - Data Structures and Object-Oriented Design
- Term: Spring 2024
- Instructor: Chris Kmiecik
- Textbook: A First Course on Data Structures in Python (Open Source PDF)
- Programming Language: Python 3
CSE 2050 is an essential part of the computer science curriculum, designed to push students to develop a deeper understanding of data structures and algorithms. As with any 2000-level university course, there is an expectation that students take ownership of their learning and invest additional time outside of lectures to fully grasp the material. The breadth of content covered in this course requires consistent practice and a proactive approach to learning.
- Build proficiency in writing Python programs that utilize imports, functions, and object-oriented design.
- Compare and analyze data structures and algorithms based on time and space complexity.
- Implement various data structures (stacks, queues, linked lists, trees, graphs) and abstract data types.
- Solve problems using recursive algorithms and dynamic programming.
In a 2000-level course like CSE 2050, the onus is on students to explore beyond what is covered in lectures. The lectures and modules introduce key concepts, but it’s crucial to dive deeper through self-study, homework, and lab assignments. While the course provides a solid framework, it requires students to engage with additional resources, collaborate with peers, and apply problem-solving strategies independently.
One of the challenges in a course of this scope is balancing theoretical understanding with practical implementation. The course covers a wide array of topics, including:
- Python Fundamentals: Strengthening basic programming skills to set a solid foundation for later, more complex topics.
- Data Structures: Implementing and comparing structures such as lists, stacks, queues, and graphs.
- Algorithm Complexity: Understanding time and space complexity to evaluate the efficiency of algorithms.
To succeed, I adopted several strategies:
- Regular Review: Consistently reviewing lecture material and coding exercises to reinforce key concepts.
- Practice Projects: Building small, practical projects outside of assignments to deepen my understanding of how data structures are used in real-world applications.
- Peer Collaboration: Engaging in study groups to discuss and solve more challenging problems collaboratively.
Dates | Module | Reading |
---|---|---|
1/17 - 1/21 | Mod 1 - Basic Python | Ch 1-2 |
1/22 - 1/28 | Mod 2 - Object-Oriented Programming | Ch 3-4 |
1/29 - 2/4 | Mod 3 - Running Time Analysis | Ch 5 |
2/5 - 2/11 | Mod 4 - Linear Data Structures | Ch 6-8 |
2/12 | Exam 1 | |
2/19 - 2/25 | Mod 5 - Recursion & Dynamic Programming | Ch 9-10 |
2/26 - 3/3 | Mod 6 - Searching and Sorting | Ch 11-12 |
3/4 - 3/10 | Mod 7 - Divide-and-Conquer | Ch 13-14 |
3/11 - 3/17 | Spring Recess | |
3/18 - 3/24 | Mod 8 - Mappings and Hashing | Ch 15 |
3/25 - 3/31 | Exam 2 | |
4/1 - 4/7 | Mod 9 - Trees | Ch 16-18 |
4/8 - 4/14 | Mod 10 - Priority Queues & Heaps | Ch 19 |
4/15 - 4/28 | Mod 11 - Graphs (Part I & II) | Ch 20-21 |
4/29 | Exam 3 |
- Labs: Weekly collaborative programming assignments, completed in pairs but submitted individually.
- Homework: Independent programming assignments designed to test mastery of each module’s content.
Each assignment builds on the previous one, gradually introducing more complex problems. The labs and homework were crucial in helping me reinforce the concepts discussed in class.
- Textbook: A First Course on Data Structures in Python (open source PDF).
- External Resources: I often supplemented course material with tutorials, documentation, and example projects to fill in gaps and build a more well-rounded understanding of Python and data structures.
- HuskyCT: All official course announcements, materials, and grades are available on the HuskyCT platform.
The course is structured to progressively increase the weight of exams, while also providing ample opportunity for participation and practice through homework and labs.
Component | Percentage |
---|---|
Exam 1 | 15% |
Exam 2 | 20% |
Exam 3 | 25% |
Homework | 25% |
Labs | 10% |
Participation | 5% |
This course, like many 2000-level courses, requires a great deal of independent work. The content is broad, and while lectures provide a solid foundation, it’s up to the students to engage with the material on a deeper level. By actively working on labs, completing homework assignments, and applying the concepts to personal projects, I was able to bridge the gaps in understanding and gain a strong foundation in data structures and algorithms.
Made with 💻 by Arturo Salinas-Aguayo
Spring 2024, CSE 2050