IntroSequenceTopics
From MWCSWiki
Contents |
CPSC 110
(Could be any programming language)
- Breadth-first topics concerning the conceptual understanding of computers, computing, and issues with technology
- Algorithmic problem-solving, expressed in anything resembling a programming language
- The concept of representing information in a program with variables
CPSC 220
Language: Java
- Decision Statements
- Repetition Statements
- Recursion
- Methods
- The concepts of modularity and reuse
- Parameter passing
- Overloaded method names
- Concept of a Class
- Using classes
- Creating a data type
- The purpose of class members and methods
- Intro to information hiding, encapsulation, inheritance, & polymorphism
- Arrays as a data structure and abstract data type
- Searching algorithms - linear search, vs. binary search (which uses recursion)
- Sorting algorithms - any basic O(n^2) sort and Merge sort (which uses recursion)
- The List as an abstract data type
- Exceptions & Exception handling
- Using an IDE
- Testing (developing test cases for algorithms/programs; using a debugger)
- Input & Output (including file I/O)
- Department coding/style standards
- Ethics
- Careers in computer science
- Optional topics:
- Net-Centric Computing
- Graphics
- Web development (providing back-end services)
- Networks
- Gaming
CPSC 230
Language: C++
- Transition to C++, illustrate major differences between it and Java
- Header files, and compiling multiple source files into a single executable
- Pointers
- Dynamic memory allocation (and de-allocation)
- Pass-by-value vs. pass-by-reference (including C++ reference op)
- C++ template classes
- Singly-linked lists
- Stacks
- Queues
- Trees, including binary search trees
- Graphs
- Sorting, searching, and basic Big-O complexity analysis
- Hashtables
- Optional topics:
- Doubly-linked lists
- Heaps
- Priority Queues
- B-Trees
- Breadth-first topics, such as ethics, careers, computing issues, informatics, etc.
CPSC 330
Language: Java and/or C++ base)
- The OO paradigm, why it's important, and how it differs historically from procedural programming
- Design techniques for identifying classes and methods (perhaps, but not necessarily, Rebecca Wirfs-Brock's "Responsibility-Driven Design" paradigm)
- UML
- class diagrams
- sequence diagrams
- collaboration diagrams
- Encapsulation
- Visibility
- Inheritance
- interface inheritance
- implementation inheritance
- Design Patterns
- Singleton
- Factory
- Template Method
- Observer
- Strategy
- Decorator
- Composite
- How to effectively use the C++ STL and/or the Java standard API
- Optional topics:
- Other design patterns, as appropriate

