

CSE260
| Course |
CSE260 |
| Title |
Computer Science II: Honors |
| Credits |
4 |
| Course Coordinator |
Eugene W. Stark |
| Current Catalog Description |
Second part of a two-semester sequence, CSE 160 and CSE 260. Further development of the object-oriented design strategies presented in CSE 160. Continues with introductions to event-driven programming, graphical user interfaces, and design patterns. Includes an extended design and programming project. |
| Prerequisite |
You must be in the CSE Honors program and have taken CSE 160 |
| Course Goals |
Students will be able to apply object-oriented techniques to design and implement well-structured, efficient programs consisting of a few thousand lines of code.
- Develop students' ability to apply object-oriented analysis and design techniques in the construction of programs of a few thousand lines of code in length.
- Provide basic awareness of the concepts of time and memory efficiency of software and how these are impacted by a choice of algorithms and data structures.
- Develop students' ability to use recursion to solve programming problems.
- Familiarize students with the use of programming tools such as revision-control systems and execution profilers, and their role in the software development process.
|
| Textbook |
Horstmann, ``Object-Oriented Design \& Patterns'', Wiley, 2004
(ISBN 0-471-31966-X).
Main, ``Data Structures and Other Objects Using Java'', Addison Wesley, Second Edition, 2003
(ISBN 0-201-74093-1). |
| Major Topics Covered in Course |
The CSE 160, 260 sequence covers topics coextensive with those covered in the CSE 114, 214, and 219, but at an accelerated pace, and with somewhat different ordering and emphasis. Both CSE 160 and 260 use the Java programming language and include a required laboratory as an integral part of the course.
CSE 160 omits making a detailed review of the basic concepts, constructs, and mechanics of computer programming that students will have covered in the CSE 110 prerequisite course. Instead, emphasis in CSE 160 is on a higher-level, object-oriented approach to the construction of software. Close attention is paid to software engineering issues such as programming style, modularity, and code reusability. The way which software tools can be used to aid the program development process is also emphasized. The course initially 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.
Specific topics covered in CSE 160 include: objects and classes, programming style, object interaction, mutability and immutability, collections of objects, iterators, debugging and testing, information hiding and modularity, cohesion and coupling, code refactoring, programming by contract, inheritance and polymorphism. |
| Laboratory Projects |
- Software development process, specifications and requirements, object-oriented design, version management.
- Event-driven programming, applets.
- Graphical user interfaces.
- Design Patterns, Threads and synchronization.
- Abstract data types, collection types, mapping types.
- Linked lists, iterators.
- Stacks and applications.
- Queues and applications.
- Recursion.
- Trees, binary search trees, heaps and balanced trees.
- Searching, binary search, hash tables, complexity, big-O notation, using profiling tools to assess program performance.
- Sorting, mergesort, heapsort, quicksort.
|
| Course Webpage |
http://www.cs.sunysb.edu/~cse260 |
|
|