CSE 160 Back to CSE Courses

Course CSE160
Title Computer Science A: Honors
Credits 4
Course Coordinator Eugene W. Stark
Current Catalog Description

First part of a two-semester sequence, CSE 160 and CSE 260. Emphasizes a higher-level, object-oriented approach to the construction of software. Focus on software engineering issues such as programming style, modularity, and code reusability. Includes the way in which software tools can be used to aid the program development process. First considers the construction of small programs, continues by treating the design and implementation of program modules, and culminates in an introduction to object-oriented design techniques suitable for larger programs.

Prerequisite

CSE 110 or 114 or MEC 112 or ESG 111.

Course Goals
  • Students will be able to apply object-oriented techniques to design and implement well-structured software modules consisting of several hundred lines of code.
Textbook
  • Barnes and Koelling, "Objects First with JAVA: A Practical Introduction using BLUEJ", Pearson, 2003 (ISBN 0130 44929 6).
  • Horstmann, "Object-Oriented Design & Patterns", Wiley, 2004 (ISBN 0-471-31966-X).
Major Topics Covered in Course
  • Introduce the basic concepts of object-oriented programming, including object classes, encapsulation, inheritance, and polymorphism.
  • Demonstrate the relationship of programming style and modularity and to the construction and evolution of robust software.
  • Familiarize students with the capabilities and use of programming tools such as syntax-directed editors, debuggers.
  • Documentation generators, and testing frameworks.
  • Develop students ability to construct software modules consisting of several hundred lines of code.
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
Department of Computer Science • Stony Brook University, Stony Brook, NY 11794-4400 • 631-632-8470 or 631-632-8471