Skip to content

artjsalina5/cse2050

Repository files navigation

🎓 CSE 2050: Data Structures and Object-Oriented Design - Spring 2024 🚀

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.


CSE 2050: Data Structures and Object-Oriented Design - A Reflection

📖 Course Overview

  • 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

Personal Commentary: Reflections on Course Structure 📜

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.


🎯 Course Objectives

  1. Build proficiency in writing Python programs that utilize imports, functions, and object-oriented design.
  2. Compare and analyze data structures and algorithms based on time and space complexity.
  3. Implement various data structures (stacks, queues, linked lists, trees, graphs) and abstract data types.
  4. Solve problems using recursive algorithms and dynamic programming.

🧠 Understanding Course Expectations

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.


💡 Key Takeaways and Learning Strategies

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:

  1. Regular Review: Consistently reviewing lecture material and coding exercises to reinforce key concepts.
  2. Practice Projects: Building small, practical projects outside of assignments to deepen my understanding of how data structures are used in real-world applications.
  3. Peer Collaboration: Engaging in study groups to discuss and solve more challenging problems collaboratively.

📅 Course Schedule Overview

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

📝 Assignments and Labs

  • 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.


💼 Learning Resources

  • 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.

⚖️ Grading Policy

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%

🗣 Final Thoughts

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

About

cse2050 work

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages