Nov 22, 2024  
2021-2022 Course Catalog 
    
2021-2022 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.

Competency 1 (1-6)
None
Competency 2 (7-10)
None


Courses and Registration



Add to Portfolio (opens a new window)