Sep 18, 2024  
2023-2024 Course Catalog 
    
2023-2024 Course Catalog [ARCHIVED CATALOG]

Add to Portfolio (opens a new window)

CSCI 1082 - Object-Oriented Programming

Credits: 4
Hours/Week: Lecture 4 Lab None
Course Description: This course presents the concepts of object-oriented programming to students with a background in the procedural paradigm. It begins with a review of standard control structures and data types. It then moves on to introduce the object-oriented programming approach, focusing on the definition and use of classes along with related principles such as encapsulation, inheritance and polymorphism.  Object-oriented applications such as GUI, client-server and multi-threaded programs will be created.  Software engineering practices such as version control, unit testing and design patterns will be introduced.
MnTC Goals
None

Prerequisite(s): CSCI 1081  with a grade of C or higher.
Corequisite(s): None
Recommendation: None

Major Content
  1. Review of control structures, functions, and primitive data types
  2. Object-oriented programming: Object-oriented design; encapsulation and information hiding; separation of behavior and implementation; classes, subclasses, and inheritance; polymorphism; class hierarchies; exception-handling
  3. Object-oriented design concepts and techniques including use of a modeling language such as UML and use of patterns
  4. Fundamentals of event-driven programming
  5. Introduction to computer graphics: Using a simple graphics API
  6. Human-computer interaction: Introduction to design issues
  7. Virtual machines: The concept of a virtual machine; hierarchy of virtual machines; intermediate
  8. Introduction to language translation: Comparison of interpreters and compilers; language translation phases; machine-dependent and machine-independent aspects of translation
  9. Software maintenance; characteristics of maintainable software; software reuse
  10. Client-server network protocols and applications
  11. Concurrency and multi-threaded processes.
  12. Unit-testing for program correctness
  13. Common design patterns
  14. Basic security practices in software development

Learning Outcomes
At the end of this course students will be able to:

  1. use object-oriented principles and concepts to design, develop, code and test a program of moderate complexity.
  2. use a modeling language to facilitate program design.
  3. use fundamental object-oriented constructs, structures, and techniques in programs or program segments.
  4. use object-oriented classes and tools as well as basic user-interface design principles to develop event-driven, graphical user applications.
  5. explain additional concepts such as virtual machines, intermediate-languages, interfaces, generics, exception-handling, inheritance, polymorphism.
  6. explain how object-oriented features can promote reusability and software-engineering.
  7. manage and coordinate revisions to a software project using revision control software.
  8. develop a concurrent, multi-threaded application.
  9. use common communication protocols to develop client-server applications.
  10. create and use unit tests to demonstrate program correctness
  11. select appropriate design patterns for common programming problems
  12. use appropriate techniques to ensure secure applications.

Minnesota Transfer Curriculum (MnTC): Goals and Competencies
Competency Goals (MnTC Goals 1-6)
None
Theme Goals (MnTC Goals 7-10)
None


Courses and Registration



Add to Portfolio (opens a new window)