Title |
Computer Science A: Honors
|
Credits |
3
|
Course Coordinator |
Eugene 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 |
Prerequisite: Honors in Computer Science or the Honors College or the WISE Honors Program or University Scholars or the Simons STEM Scholars Program.
Advisory Prerequisite: CSE 101 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 |
Y. Daniel Liang, Introduction To Java Programming, Comprehensive Version. Pearson, 11th ed., 2017.
|
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
- 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 |
- 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
|