CSE261

Course CSE261
Title Laboratory for Computer Science B: Honors
Credits 1
Course Coordinator

Eugene Stark

Description

Must be taken concurrently with lecture component, CSE 260; a common grade for both courses will be assigned. Laboratory sessions will focus on the use of integrated development environments and associated tools to provide students with experience in the practice of programming in a variety of high-level languages such as Java, Scala, Haskell, Python or Javascript. 

Bulletin Link

Prerequisite Corequisite: CSE 260
Course Outcomes

After this course students can :

  • Apply techniques of object-oriented programming in the context of large-scale programs.
  • Use programming tools such as syntax-directed editors, debuggers, execution profilers, documentation generators and revision-control systems.
  • Apply an understanding of the importance of time and memory efficiency in the construction of software.
Textbook

No required textbook.

Major Topics Covered in Course
  • The software lifecycle: requirements and specifications, use cases, object-oriented design
  • UML: use case diagrams, class diagrams, sequence diagrams
  • Guidelines for class design, encapsulation, programming by contract, preconditions, postconditions, invariants, and assertions
  • Mutability and immutability, side effects and aliasing
  • The Java object model: primitive and object types, subtypes, wrapper classes, object identity versus equality, hashing and equality, cloning objects: shallow and deep copy, object serialization
  • Application frameworks, model/view/controller architecture, design patterns
  • Packages, using refactoring tools
  • Threads and synchronization, using threads with Swing
  • Running time analysis, big-O notation, using execution profiling tools to measure time and memory use
  • Abstract data types: specification and implementation
  • Collections: lists, bags, sets, and maps
  • Indexed collections, sorted collections, binary search
  • Sorting: mergesort, heapsort, quicksort
  • Stacks, queues, and their applications: depth-first and breadth-first search, Dijkstra's algorithm
  • Trees: binary heaps, binary search trees, balanced trees
  • Linked implementation of lists and trees, skip lists
  • Recursion
  • Hash tables and their implementation
Laboratory
Course Webpage