Course CSE161
Title Laboratory for Computer Science A: Honors
Credits 1
Course Coordinator

Eugene Stark


Must be taken concurrently with lecture component, CSE 160; a common grade for both courses will be assigned. Laboratory sessions will focus on development of pragmatic programming skills and use of programming environments and tools in a supervised setting.

Bulletin Link

Prerequisite Computer Science Honors or Honors College or the WISE Honors or University Scholar

Corequisite: CSE 160
Course Outcomes

After this course, students can :

  • Construct software modules consisting of several hundred lines of code in an object-oriented language.
  • Use programming tools such as syntax-directed editors, debuggers, documentation generators and testing frameworks.

No required textbook

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
Course Webpage