PF. Programming Fundamentals (65 core hours)
PF1. Algorithms and problem-solving (core -- 8 hours)
Problem-solving strategies
Debugging strategies
Structured decomposition
The concept and properties of algorithms
The role of algorithms in the problem-solving process
Introduction to algorithmic complexity
Empirical measurements of performance
PF2. Fundamental programming constructs (core -- 10 hours)
Basic syntax and semantics of a higher-level language
Variables, types, and assignment
Conditional and iterative control structures
Functions and parameter passing
Simple I/O
Exception handling
PF3. Basic data structures (core -- 12 hours)
Primitive types
Arrays
Records
Strings and string processing
Data representation in memory
Pointers (or the notion of a reference in an object-oriented language)
Linked structures
Static, stack, and heap allocation
Runtime storage management
Strategies for choosing the right data structure
PF4. Recursion (core -- 6 hours)
The concept of recursion
Recursive mathematical functions
Simple recursive procedures (Towers of Hanoi, generating
permutations)
Divide-and-conquer strategies
Recursive backtracking
Implementation of recursion
PF5. Abstract data types (core -- 9 hours)
The importance of data abstraction
Abstract programming interfaces
Abstract data types
Encapsulation and levels of visibility
Information hiding
Iteration protocols
Specific ADT structures (stacks, queues, symbol tables, trees, graphs)
PF6. Object-oriented programming (core -- 10 hours)
Object-oriented design
Classes, subclasses, and inheritance
Class hierarchies
Polymorphism
Fundamental design patterns
PF7. Event-driven and concurrent programming (core -- 4 hours)
Event-handling methods
Event propagation
Managing concurrency in event handling
PF8. Using modern APIs (core -- 6 hours)
API programming
Class browsers and related tools
Programming by example
Debugging in the API environment