CS 3331: Advanced Object Oriented Programming
Texas Regional STEM Degree Accelerator awarded this course because it has been re-designed to promote student inclusion and engagement. This document demonstrates the improvements made to the course following the normal course work.
Improved Course Changes
The primary goal of the course redesign is to improve students’ Intrinsic Motivation for programming and problem solving.
Nano-Programming Problems (NPP) are going to be designed for in-class hands collaborative problem solving with diverse domains that include art, culture, history, music, and technology. There are 10 groups of NPP, each group corresponds to a distinct programming concept. For this course, each group contains 2 nano-problems that students can choose from. All NPPs are made on teams, therefore promoting students’ interpersonal and collaboration skills. Nano-problems will be scaled up in complexity and size.
- The course will contain 10 Groups of NNP designed for course specific subjects.
- One week long assignments to be presented and then shared with the rest of the students.
- Engaging fields of study by using diverse domains that include real-world context such as architecture, arts, space exploration, history, and many others.
- Innovative problem solutions are encouraged as students explore various problem solving skills to think “outside the box”.
- Students will learn the fundamentals of producing good programming solutions. This should include the whole programming process: Requirements and Analysis, Design, Development, Testing, and Maintenance.
Normal Course Information
The class will follow the folowing objectives and learning outcomes. The redisign will still use the following agenda to teach students but with the improvements stated in the past section.
- To understand object-oriented design concepts and principles,
- To acquire skills needed for developing high quality object-oriented programs,
- To be able to use of object-oriented design notations and support tools such as UML for modeling problem solutions and software systems, and
- To be proficient in object-oriented programming environments.
Upon successful completion of this course, students will be able to:
Synthesis and evaluation
- Design and implement software employing the principles of modularity, encapsulation, information hiding, abstraction, and polymorphism,
- Design, implement, and use classes and methods that follow conventions and styles, and make appropriate use of advanced features such as inheritance, exceptions, and generics,
- Evaluate existing classes and software for the purposes of extension through inheritance,
- Create API documents for classes, fields and methods,
- Design and implement test suites for automated unit testing,
- Refactor existing software to improve its design or efficiency,
Application and analysis
- Formulate use case diagrams and scenarios to support understanding of user requirements,
- Use object-oriented design notations, including UML class diagram, state machine diagrams, and sequence diagrams, to model problem solutions,
- Use basic object-oriented design patterns to structure solutions to software design problems
- Translate design features, such as classes and their relationships, to implementations,
- Use frameworks and library classes and methods in problem solutions,
Knowledge and comprehension
- Explain the difference between an object-orientedapproach and a procedural approach.