New Building Website

CSA 271 Object-Oriented Programming (3 credits)

Catalog description:

The design and implementation of software using object-oriented programming techniques that include inheritance, polymorphism, and composition. Students will analyze program specifications and identify appropriate objects and classes. Additional programming topics include recursion, using existing class libraries, exception handling, file IO and graphical user interfaces.

 
Prerequisite: CSA 174 (with C- or above) or equivalent

Course Objectives:

  • Design and implement programs using object-oriented programming techniques
  • Use 3rd party class libraries to assist in problem solving
  • Develop applications that incorporate exception handling
  • Develop applications that include a graphical user interface (GUI)
  • Store and retrieve data from permanent storage using an ASCII and binary data format
  • Use recursion as a problem solving technique
  • Use standard collection classes such as associative arrays and sets

CSA 271 is a second-tier course in the CSA2 "Computer Programming" thematic sequence.

Computer software plays an important role in our daily lives: Our mobile phones, laptop computers, online banking, Internet applications such as YouTube, video games and movies, cars, and almost all aspects of daily life are touched by software. In your personal and professional life you will utilize computer software. It is also likely that you will select, or even influence the design of, software that is used in your professional or personal life. This thematic sequence will give you a deep understanding of how software works and is created, its limitations, and its potential. You will be able to read software and therefore be able to make informed decisions when selecting or participating in the design of business, scientific, or information systems that utilize computer software.

The CSA2 thematic sequence consists of both of the following introductory computer programming courses.

  • CSA 174, Fundamentals of Programming and Problem Solving
  • CSA 271, Object-Oriented Programming

Followed by one of the following courses...

  • CSA 274, Data Abstraction and Data Structures
  • CSA 252, Web Application Programming
  • CSA 283, Data Communications and Networks

CSA  271 is a course in which you build upon the programming concepts and techniques learned in CSA 174 to design and implement more sophisticaed programs using object-oriented desing and programming techniques.

 

Learning Outcomes

Below are the learning outcomes for this course.  Miami Plan foundation courses and thematic sequence courses address some or all of the Four Principles of Liberal Education: Thinking Critically, Understanding Contexts, Engaging with Other Learners, and Reflecting and Acting.  These principles are not simply additional "topics" that are covered during the course.  Rather, they are perspectives and ways of reasoning that are essential to all the content of the course.  Learning outcomes that address these principles are indicated in the table. Liberal Education Principals (LEP)  Key: T=Thinking Critically, U=Understanding Contexts, E=Engaging with Other Learners

Learning Outcomes:

LEP

CSA271.1:  To be able to design and implement computer programs using object oriented programming techniques.
CSA 271.1.1   Implement basic control structures, nested control structures, well-specified classes, single and multi-dimensional arrays, input and output methods, and string methods as learned in CSA 174.
CSA 271.1.2   Use class libraries to assist in problem solving.
CSA 271.1.3   Make appropriate use of inheritance, polymorphism, composition, abstract classes, and interfaces.
CSA 271.1.4   Make appropriate use of two or more collection classes.
CSA 271.1.5   Read and write basic UML class diagrams.
CSA 271.1.6   Break a programming problem down into an appropriate set of classes and identify appropriate methods for each class.
CSA 271.1.7   Research and use classes not studied in the course to address problems

T,U

CSA274.2:  To be able to write robust programs
CSA 271.2.1   Resolve compilation errors, validate program input, use the debugger to locate logic errors, and generate basic test cases as learned in CSA 174.
CSA 271.2.2   Design a complete set of test cases and use this to identify logic errors.
CSA 271.2.3   Effectively use exception handling features to write exception classes, handle exceptions, and throw problem specific exceptions.

T,U

CSA271.3:  To be able to use permanent storage to preserve the state of a program
CSA 271.3.1   Read and write data to text files.
CSA 271.3.2   Read and write data and objects to binary files

 

CSA271.4:  To be able to use recursion as a problem solving technique
CSA 271.4.1   Trace through recursive computations.
CSA 271.4.2   Recognize problem situations where recursion is appropriate and write recursive methods that process both numeric and structured data.
CSA 271.4.3   Describe and implement the mergesort and quicksort algorithms

T,U

CSA271.5:  To be able to design and develop applications with a graphical user interface
CSA 271.5.1   Use fundamental classes to design a rudimentary, but functional, user interface

U,E

Required Topics (approximate week allocation):

  • Object-Oriented Programming (4.0):
    • Encapsulation
    • Inheritance
    • Composition
    • Polymorphism
    • Interfaces
    • UML
  • I/O (2.0)
    • Unformatted
    • Sequential and random file IO
    • Interactive IO
  • Exception Handling (1.5)
    • Catch blocks
    • Throwing exceptions
    • User-defined exceptions
  • Graphical User Interfaces (3.0)
    • Standard graphics libraries
    • Applets
  • Recursion (1.5)
    • Analyze and synthesize recursive algorithms
  • Collection Classes (2.0)
    • Arrays
    • Sets
    • Lists
    • Associative arrays
    • Iterators
  • Exams (1.0)