CSE 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:

CSE 174 (with C- or above) or equivalent

CSE 271 is a second-tier course in the CSE2 "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 CSE2 thematic sequence consists of both of the following introductory computer programming courses.

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

Followed by one of the following courses

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

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

Required Topics (approximate week allocation):

  • Defining classes (2.5)
    • Data members
    • Setters, getters, constructors
    • equals, toString, compareTo
    • Deep and shallow copies
    • Information hiding and encapsulation
  • Object-Oriented Programming (4.0):
    • Inheritance
    • Interfaces
    • Polymorphism
    • Composition
    • Object Oriented Design
    • UML
  • I/O (1.0)
    • Binary files
    • Random file IO
  • Exception Handling (1.0)
    • Try-Catch blocks
    • Throwing exceptions
  • Graphical User Interfaces (2.0)
    • Standard graphics libraries
    • Applets
  • Recursion (1.5)
    • Analyze and synthesize recursive algorithms
  • Sorting (1.0)
    • Quicksort
    • Mergesort
  • Collection Classes (1.0)
    • Sets
    • Iterators
  • Exams (1.0)

Learning Outcomes:

1. Design and implement computer programs using object oriented programming techniques.

1.1. Implement basic control structures, nested control structures, single and multi- dimensional arrays, input and output methods, and string methods as learned in CSE 174.

1.2. Implement a class definition from a given design that incorporates primitive types, 3rd party classes, accessor and mutator methods, constructors, method overloading, static data and methods, and other methods for processing the object 1.3. Describe object-oriented programming concepts including objects, classes, methods, encapsulation, inheritance, and polymorphism

1.4. Use class libraries to assist in problem solving

1.5. Write programs that use inheritance, polymorphism, composition, abstract classes, and interfaces

1.6. Write programs that use of two or more collection classes

1.7. Write basic UML class diagrams based on a problem statement

1.8. Break a programming problem down into an appropriate set of classes, identify appropriate methods for each class

1.9. Research and use classes not studied in the course to solve programming problems

2. Write robust programs

2.1. Resolve compilation errors, validate program input, use the debugger to locate logic errors, and generate basic test cases as learned in CSE 174

2.2. Design and document a complete set of test cases and use this to identify logic errors

2.3. Use exception handling features to write exception classes, handle exceptions, and throw problem specific exceptions

3. Use permanent storage to preserve the state of a program

3.1. Read and write data and objects to binary files

4. Use recursion as a problem solving technique

4.1. Trace through recursive computations

4.2. Recognize problem situations where recursion is appropriate and

4.3. Write recursive methods that process both numeric and structured data

5. Describe and implement sorting algorithms

5.1. Describe and implement non-recursive sorting algorithms including bubble sort, insertion sort, and selection sort algorithms

5.2. Describe and implement recursive sorting algorithms including mergesort and quicksort algorithms

5.3. Compare sorting algorithms with respect to efficiency

6. Design and develop applications with a graphical user interface

6.1. Use fundamental classes to design a functional user interface

6.2. Implement event-driven programs within the context of a GUI