Programming Fundamentals
Programming Paradigms
- Procedural programming
- Functional programming
- Object-oriented programming
- Event-Driven programming
- Logic Programming
Fundamental programming constructs: Basic syntax and semantics of a higher-level language
- Variables
- Types
- Elementary types
- Pointers
- Structured types
- Product and coproduct types
- Algebraic types
- Recursive types
- Arrow (function) types
- Parameterized types
- User-defined types
- Abstract data types
- Expressions
- Order of evaluation
- Side effects
- Assignments
- Arithmetic Operations
- Simple I/O
- Control flow
- Sequential
- Conditional
- Iterative
- Recursive
- Procedures
- Functions
- Parameters
- Pass by reference
- Pass by value
- Pass by name
- Pass by result
- Pass by sharing
- Pass by value-result
Algorithms and problem-solving
- Problem-solving strategies
- Algorithms: concepts & properties
- Algorithms: implementation
- Testing
- Debugging strategies
Data structures and Abstract Data Types (ADT)
- Linked Structures
- Hash Table
- Heap
- Advanced Data Structures
- Set ADT
- Dictionary
- Graph
- Queue
- Stack
- Tree
- Implementation strategies
- Selection strategy
Recursion
- The concept of recursion
- Recursive mathematical functions
- Simple recursive procedures
- Divide-and-conquer strategies
- Recursive backtracking
- Implementation of recursion
- Recursive algorithms
Event-Driven Programming
- Event-handling methods
- Event propagation
- Managing concurrency in event handling
- Exception handling
- Asynchronous I/O
Object-oriented design
- Polymorphism (subtype polymorphism vs. inheritance)
- Class hierarchies: Classes and subclasses
- Collection classes and iteration protocols
- Class objects
- Design patterns
- Reuse
- Encapsulation and information-hiding
- Separation of behavior and implementation
- Inheritance (overriding, dynamic dispatch)
Component-based computing
- API programming
- Class browsers and related tools
- Debugging in the API environment
- Using APIs
- Middleware
to top