SIE508Syllabus ObjectOrientedPrgr
SIE508Syllabus ObjectOrientedPrgr
Course Description
This course introduces advanced programming skills and focuses on the core concepts
of object-oriented programming and design using a high-level language, either Python
or Java. 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 sprawling 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 and as seen in stacks, queues, lists, and trees will be
examined.
Credits: 3
Faculty Information
Office Hours:
Office hours for this course are announced at the beginning of each session.
Alternatively, contact the instructor.
Instructional Materials:
1. Computers:
Each student is required to have access to a laptop, which will be used in class
for hands-on exercises during class (any platform is ok, Windows, Mac OS or
Linux but not Chrome book)
2. Textbooks:
Instructor Nittel:
Mastering Object-Oriented Python: Build powerful applications with
reusable code using OOP design patterns and Python 3.7, 2nd Edition,
Steven F. Lott (June 14, 2019), ISBN-10: 1789531365
Instructor Dufour:
Java Foundations: Introduction to Program Design & Data Structures, 4th
edition
By John Lewis, Peter DePasquale, and Joseph Chase
3. Software:
Instructor Nittel:
Latest version of the Python Programming language and an Integrated
Development Environment (IDE) such as PyCharm.
Instructor Dufour:
Latest version of both Eclipse IDE and Java JDK (currently version 12)
Course Goals:
• Introduce the principles of object-oriented programming in a higher-level
programming language, such as Python or Java
• 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.
• Establish development methods in object-oriented programming to qualify
students for teaching the language in other settings
Course Outline A
(Regular Semester Course Offering using Python, Instructor: Silvia Nittel)
1. Course Schedule
This course consists of regularly offered on-campus lectures and student-engaged code
writing sessions with on-campus and online live graduate students. These sessions are
also recorded for viewing by distance students that are unable to attend live virtually.
Evening hour virtual office hours are made available such that all distance students are
able to attend at a minimum of one hour per week and on-campus students are as well
invited to attend these sessions.
Course Outline B
(Summer Six-Week Course Offering using Java, Instructor: Chris Dufour)
This course consists of regularly offered on-campus lectures and student-engaged code
writing sessions with on-campus and online live graduate students. These sessions are
also recorded for viewing by distance students that are unable to attend live virtually.
Students are expected to have reviewed assigned reading material prior to attending
class live or prior to viewing each video lecture.
Evening hour virtual office hours are made available through Zoom such that all
distance students are able to attend at a minimum of one hour per week and on-
campus students are as well invited to attend these sessions.
In addition to regular homework delivered through Blackboard, two projects will be due
at the midpoint and end of the term.
1. Course Schedule
Grading:
Grades are primarily based upon performance on homework (40%), two projects (40%),
and their proposals (20%).
Project 1 Proposal Date: TBA
Project 1 Due Date: TBA
Project 2 Proposal Date: TBA
Project 2 Due Date: TBA
Homework:
There will be several assignments in this course that will typically be due on TBA. Each
may include conceptual questions, which will require a written answer. There will also
be a coding component, generally involving the creation of a small program
demonstrating our most recently covered topic. Depending on the breadth of the
assignment, there will be either one or two weeks to complete them.
Once during the course, you may submit an assignment late without any penalty. The
only requirement for this is that you state before the due date that you need this time
(through Blackboard). In this case, you will receive three extra days to complete your
assignment, with it due on TBA. There are no other late assignments allowed during the
course semester. If necessary you must submit what you have!
Projects:
As part of the course you will develop two programming projects. Each project may be
of your own design, though you will be required to write a proposal and get your idea
approved. Your projects must demonstrate the breadth of programming knowledge you
gain during the course. You are encouraged to pick a problem related to your interests
or work that you would like to attempt to solve, regardless of how difficult it appears.
You will be graded only on what you submit, not by how closely you accomplish your
proposal.
Collaboration Policy (applies to both the regular semester and summer offerings)
Because it is important for students to be able to develop and demonstrate the ability to
create programs, this course has very strict rules on the degree of collaboration allowed
on homework and projects. Because it is important for software developers to be able to
work both independently and in teams, we will allow for collaboration on some
assignments. Whenever a student collaborates in any way with anyone, he/she must
list the names and email addresses of those they collaborated with in the header to
their assignment.