SIE508 Object-Oriented Programming (with Python)
Spring 2023 — Mon/Wed 2:00pm-3:15pm (live class)
Course Description
This course introduces advanced programming skills and focuses on the core concepts of object-oriented programming and design using Python as a high-level programming language. Object-oriented programming represents the integration of software components into a large-scale software architecture. Software development in this way represents the next logical step after learning coding fundamentals, allowing for the creation of larger programs. The course focuses on the understanding and practical mastery of object-oriented concepts such as classes, objects, data abstraction, methods, method overloading, inheritance and polymorphism. Practical applications in the domain of data science will be examined.
Credits: 3
Prerequisite: Graduate standing, SIE507, or programming experience in Python, or permission of the instructor
Faculty Information
Dr Silvia Nittel, Associate Professor, School of Computing and Information Science, University of Maine
Textbook:
Software:
Latest version of the Python Programming language and an Integrated Development Environment (IDE) such as PyCharm
Course Goals:
- Introduce the principles of object-oriented programming in a higher-level programming language such as Python
- Analyze a problem statement to develop a mental model of objects necessary to create a software architecture
- Utilize object-oriented programming to frame software architectures, with care towards separation of concerns and abstraction
- Gain skills in designing, and programming software for reuse of code.
Student Learning Outcomes:
- Develop understanding of writing object-oriented programs that combine functions and data
- Analyze a problem statement to develop a mental model of objects necessary to create a software architecture
- Combine previously written code into larger programs
- Translate abstract concepts into classes in software.
- Apply the object-oriented programming language to develop software, including programs utilizing multiple classes.
Course Outline:
Week 1: | Refresher Section of Course 1. Refresher of Python Fundamentals & 2. Building a larger software system using procedural programming (Data Science project + Tkinter) |
Week 2: | 3. Building a larger software system using procedural programming |
Week 3: | Object-Oriented Programming: Concepts 4. Intro and Overview to Object-oriented programming 5. Objects |
Week 4: | 6. Objects 7. Data Abstraction & Information Hiding & Encapsulation |
Week 5: | 8. Constructors, destructors, and object creation 9. Name space and references |
Week 6: | 10. Class Methods 11. Methods Overloading |
Week 7: | 12. Inheritance 13. Inheritance |
Week 8: | 14. Polymorphism 15. Polymorphism |
Week 9: | 16. Abstract Classes & Methods 17. Exceptions & Exception Handling |
Week 10: | Practical Section of Course: Object-oriented design for software developed in first 2 weeks of class 18. Practical Object-Oriented Design |
Week 11: | 19. Practical Object-Oriented Design 20. Practical Object-Oriented Design |
Week 12: | 21. Practical Object-Oriented Design 22. Practical Object-Oriented Design |
Week 13: | 23. Practical Object-Oriented Design 24. Practical Object-Oriented Design |
Week 14: | 25. Practical Object-Oriented Design 26. Practical Object-Oriented Design |
Week 15: | Final project presentations |
Grading:
As a graduate level course, students are expected to exhibit high quality work that demonstrates sound understanding of the concepts and their complexity. Earning an “A” represents oral and written work that is of exceptionally high quality and demonstrates superb understanding of the course material. A “B” grade represents oral and written work that is of good quality and demonstrates a sound understanding of course material. A “C” grade represents a minimally adequate completion of assignments and participation demonstrating a limited understanding of course material. This class has no exams; only homeworkand/or project assignments. Active live class participation(virtual or on-campus)is expected and may take the form of active participation in the live class sessions or regular participation in virtual office hours with the instructor with at least one time each week meeting the schedule needs of all students
Grading criteria:
- Homework assignments (programming, presentations) –70%
- Active participation–10%
- Final Project (programming project and presentation)–30%
Students are expected to attend classsessions (in person or virtual)or office hours (virtual). Late assignments will result in 10% deduction in grade.