CISC 106: Intro to Computer Science 1 (for Engineers)
Programming Fundamentals
- PF/FundamentalConstructs [core] [6 of 9]
- Topics:
- Basic syntax and semantics of a higher-level language
- Variables, types, expressions, and assignment (mutation)
- Simple I/O
- Conditional and iterative control structures
- Functions and parameter passing
- Structured decomposition
- PF/AlgorithmicProblemSolving [core][2 of 6]
- Topics:
- Problem-solving strategies
- The role of algorithms in the problem-solving process [introduction]
- The concept and properties of algorithms [introduce termination, space-time efficiency, that they don't necessarily follow from the data representation]
- PF/DataStructures [core][2 of 10]
- Topics:
- Arrays
- Strings and string processing [no coverage of underlying representation]
- Linked structures [no explicit pointer manipulation]
- Strategies for choosing the right data structure [few choices in 106]
- PF/Recursion [core][2 of 4]
- Topics:
- The concept of recursion
- Recursive mathematical functions
- Simple recursive functions
- PF/EventDriven [core][1 of 4]
- PF/ObjectOriented [core][2 of 8]
- Topics:
- Object-oriented design
- Encapsulation and information-hiding
- Separation of behavior and implementation
- Classes
Algorithms and Complexity
- AL/BasicAnalysis [core][1 of 4]
- Topics:
- Big O {Big O only: constant, linear, polynomial]
- Empirical measurements of performance
- Time and space tradeoffs in algorithms
- AL/AlgorithmicStrategies [core][1 of 6]
- Topics:
- Brute-force algorithms
- Divide-and-conquer
- AL/FundamentalAlgorithms [core][2 of 12]
- Topics:
- Sequential and binary search algorithms
- Quadratic sorting algorithms (selection, insertion)
- O(N log N) sorting algorithms (Quicksort, heapsort, mergesort) [QUICKSORT ONLY]
Programming Languages
Note that there is currently a proposal to create a separate Functional Programming Core in the CS-BOK (the change is neutral in the total number of core hours).
- PL/AbstractionMechanisms [core][1 of 3]
- Topics:
- Procedures, functions, and iterators as abstraction mechanisms [No Iterators in the strongly-typed sense (but functions on parametric types)
- Type parameters and parameterized types
- PL/ FunctionalProgramming [elective]
- Topics:
- Recursion over lists, natural numbers, trees, and other recursively-defined data [lists and NN only, no trees]
- Closures and uses of functions as data (infinite sets, streams) [not explain closures, but used in anonymous functions]
Software Engineering
- SE/SoftwareDesign [core][1 of 8]
- Topics:
- Fundamental design concepts and principles
- The role and the use of contracts
- Structured design
- SE/UsingAPIs [core][0.5 of 3]
- Topics:
- Programming using APIs [built-in Python list and string APIs, Matlab]