Welcome to Object-Oriented Analysis & Design CSCI 4448/5448! I am excited to teach this class. We will be doing a few things differently from other classes to make OOAD more interactive and participatory. You will have the opportunity to continuously share your opinions in class through iClicker and get instant feedback. You will be engaged in an active learning environment where you learn from many sources, including your peers in class. I will also interview in class (through Zoom) some of the most famous industry leaders, book authors, and alumni. In the initial phase you will be developing a project in Java and IntelliJ IDEA using Test Driven Development, and in the second part you have a wide choice of technologies. You are expected to follow an organized software development process (eXtreme Programming) and ultimately deliver a polished product with emphasis on good design, clean code, sufficient testing, and proper documentation.
Lectures: M/W/F 3:00 - 3:50 PM due to covid-19 mitigation on Zoom https://cuboulder.zoom.us/j/96158358156
VIP: Zoom is set up so that you can only join when authenticated from a colorado.edu account.
Professor: Danny Dig
Email: danny.dig [at] colorado.edu
Office: on Zoom
Office hours: Right after class at 3:50pm, and by appointment
TA: Dwight Browne
Email: Dwight.Browne [at] colorado.edu
Office: on Zoom: https://cuboulder.zoom.us/j/91343768707
Office hours: Tues 10-12 and Thu 3-5
Grader: Vasu Sharma
Email: Vasu.Sharma [at] colorado.edu
Office: on Zoom: https://cuboulder.zoom.us/j/8073355370
Office hours: Wed 10-12, Fri 10-12
Grader: Abhas Prasad
Email: Abhas.Prasad [at] colorado.edu
Office: on Zoom: https://cuboulder.zoom.us/j/8866887657
Office hours: Mon 1-3, Wed 1-3
Object-Oriented Analysis and Design is a course that presents an introduction to the design and construction of software systems using techniques that view a system as a set of objects that work together to realize the system's functionality. This perspective stands in contrast to more traditional "procedural" or "structured" design techniques that viewed systems as a set of procedures that manipulate shared data structures. Proponents of object-oriented techniques point to the flexibility and extensibility of object-oriented systems along with other benefits such as increased modularity, abstraction, and encapsulation.
In this class, we will examine fundamental objected-oriented analysis and design techniques and show how decisions made during analysis and design impact the implementation of software systems. This class does not focus on object-oriented programming; however, we will examine many examples of object-oriented systems written in Java and other languages. A primary focus will be the understanding and application of key object-oriented principles and design patterns.
At the completion of this course, students will be able to...
This course involves extensive work in programming for projects and assessments and therefore requires knowledge of programming (this course will primarily use Java, along with some Python) and basic computer architecture. Corresponding CU Boulder courses includes CSCI 1300, 2270, and CSCI 3308. Both Java and Python are straightforward languages to install, read, and apply, especially for those with existing background in other languages (like C, C++, or C#). They are also particularly suited to object-oriented design projects such as those in this class.
Neither Java nor Python programming will be taught in depth as an in-class topic, although examples and code snippets will be reviewed. Links for Java and Python tutorials and support materials will be provided for students to use as needed.
The class may also provide experience with other tools and languages, including but not limited to Git, HTML, UML and UML Editors, IDE, Jira, Amazon Web Services, various databases, and others. Prior experience in these tools is not required for the class.