SIE508: Object-Oriented Programming

SIE508  Object-Oriented Programming (with Python)

Spring  2023  — Mon/Wed 2:00pm-3:15pm (live class)

Silvia Nittel

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:

Python Object-Oriented Programming: Build robust and maintainable software with object-oriented Python applications and libraries, 4th Edition Paperback – July 2 2021, Steven F. Lott, Dusty Phillips.

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
Syllabus

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.