CSE160

Course CSE160
Title Computer Science A: Honors
Credits 3
Course Coordinator

Eugene W. Stark

Description

First part of a two-semester sequence, CSE 160 and CSE 260. An introduction to procedural and object-oriented programming methodology and basic data structures. Topics include program structure, conditional and iterative programming, procedures, arrays, object classes, encapsulation, information hiding, inheritance, polymorphism, file I/O, exceptions and simple data structures, such as lists, queues and stacks.

Bulletin Link

Prerequisite

Computer Science Honors Program or Honors College or WISE program or University Scholar or permission of instructor

Corequisite: CSE 161

SBC: TECH

Course Outcomes
  • An ability to program in a procedural and object oriented language, using concepts such as loops, methods, object classes, encapsulation, inheritance, and polymorphism.
  • An ability to use and define fundamental data structures such as arrays, stack and queues.
  • An ability to program with sound code structure and use systematic software debugging and testing techniques.

Textbook
  • Barnes and Koelling, "Objects First with JAVA: A Practical Introduction using BLUEJ", Pearson, 2009 (ISBN 0-13-606086-2).
  • Horstmann, Object-Oriented Design and Patterns, Wiley, 2006 (ISBN 0-471-74487-5).
  • Supplementary Material: None

Major Topics Covered in Course
  • Objects, methods, and classes
  • Object state, mutability and immutability, object interaction
  • Accessors and mutators
  • Fields, parameters, and local variables
  • Abstraction and modularization
  • Arrays, collections, and iterators
  • Library classes, documentation, using the Javadoc documentation generator
  • Designing classes: modularity and information hiding, cohesion, coupling, refactoring
  • Programming style: naming, commenting, formatting, avoiding code repetition, using a syntax-directed editor
  • Testing and debugging: using a debugger, unit testing, regression testing, using the JUnit testing framework
  • Regular expressions and programming applications
  • Recursion
  • Inheritance, polymorphism, overloading and overriding, static and dynamic type, subtyping, dynamic method lookup
  • Abstract classes and interfaces
  • Handling errors: exceptions and handlers
  • Files and input/output, streams, readers and writers, character sets
  • Introduction to graphical user interfaces, using the Swing framework
  • Introduction to object-oriented design, using CRC cards

Laboratory Projects
  • Class definitions, methods, programming style.
  • Object interaction, object references, object state, mutability and immutability, using a debugger.
  • Collections, iterators, arrays, library classes, documentation, using Javadoc.
  • Packages and import, information hiding, public and private access modifiers, class diagrams.
  • Debugging and testing, unit testing, regression testing, using JUnit for testing.
  • Designing classes, modularity, programming by contract, preconditions, postconditions, invariants, assertions Cohesion, coupling, refactoring.
  • Inheritance, polymorphism, Overriding, static and dynamic type, dynamic method lookup, super Abstract classes, interfaces, multiple inheritance, Exceptions and handlers, files and I/O, serialization, Intro to object-oriented design, CRC cards.

Course Webpage

CSE160