About CS 3331
This page is organized as follows:
Course Description
The following description is excerpted from the Undergraduate Course Catalog:
An in-depth exposure to the object-oriented programming paradigm, which builds upon programming experience gained in lower-level computer science classes. Emphasis on programming in an object-oriented language with which students are already familiar, and on requirements, testing, code reading, and comprehension.
Prerequisites
The prerequisite of this course is CS 2402 with a grade of C or better.
Course Texts
The required course textbook is:
Xiaoping Jia, Object-Oriented Software Development Using Java, second edition, Addison Wesley, 2003.
The textbook is available at the UTEP bookstore, and you are expected to acquire a copy for your use in this course, as reading assignments will be taken from the textbook.
In addition to the required textbook, the following books are recommended as references:
- Scott W. Ambler, The Elements of UML 2.0 Style, Cambridge University Press, 2005.
- Allan Vermeulen, et al., The Elements of Java Style, Cambridge University Press, 2000.
- Maurice Naftalin and Philip Wadler. Java Generics, Oreilly, 2007.
Supplemental readings will be taken from the Web or hard copies will be handed out in class.
Course Objectives
The goal of this course is to equip students with advanced design and programming techniques in the object-oriented programming paradigms. To this end, specific goals are:
- To increase students' knowledge of object-oriented design concepts,
- To teach the knowledge and skills needed to develop reusable, quality programs,
- To instruct students on the use of object-oriented design tools such as UML for modeling problem solutions and complex systems, and
- To increase students; proficiency in programming in object-oriented environments.
Learning Outcomes
Level 3: Synthesis and Evaluation
Level 3 outcomes are those in which the students can apply the material in new situations. This is the highest level of mastery.
Upon successful completion of this course, students will be able to
- Develop modular solutions to a given problem statement,
- Design and implement software employing the principles of encapsulation, information hiding, abstraction, and polymorphism,
- Design, implement, and use classes and methods in an object-oriented programming language, employing standard naming conventions and making appropriate use of advanced features such as inheritance, exception handling, I/O, references, and simple GUIs,
- Evaluate existing classes and software for the purposes of extension through inheritance,
- Use and create standard API documents to understand and document the use of classes and methods,
- Design and implement through test suites (unit testing),
- Refactor existing software to improve its design or efficiency.
Level 2: Application and Analysis
Level 2 outcomes are those in which the student can apply the material in familiar situations, e.g., can work a problem of familiar structure with minor changes in the details.
Upon successful completion of this course, students will be able to
- Use object-oriented design tools such as UML class diagrams to model problem solutions and express inheritance, association, aggregation, and composition relationships among classes,
- Recognize and use basic object-oriented design patterns to structure solutions to problems,
- Implement association relationships and multiplicities,
- Use frameworks, classes, and methods from standard libraries in problem solutions,
Level 1: Knowledge and Comprehension
Level 1 outcomes are those in which the student has been exposed to the terms and concepts at a basic level and can supply basic definitions. The material has been presented only at a superficial level.
Upon successful completion of this course, students will be able to
- Explain the fundamentals of software development including development process, quality of software systems, and challenges of software development, and
- Define or explain principles of modularity, encapsulation, information hiding, abstraction, and polymorphism.
Last modified by Yoonsik Cheon: $Id: description.html,v 1.9 2009/08/08 02:05:58 cheon Exp $