This module provides an overview of Python, highlighting its overarching features. Key areas include:
Students will develop foundational skills in Python programming while understanding its versatile paradigms and data structures.
The introductory module provides essential administrative details about the course, including:
It also introduces key concepts such as procedural and object-oriented paradigms, assembly, and concurrent programming, along with an overview of functional programming through Scheme.
This module delves into data types within C/C++. It covers:
By understanding these data types, students will gain deeper insights into memory representation and data manipulation in C/C++.
This module focuses on converting between types of different sizes and bit representations using pointers. Key topics include:
Students will learn practical techniques for managing data and memory in C/C++ through hands-on examples and exercises.
This module teaches students how to create a generic swap function applicable to data types of arbitrary size. Important topics addressed include:
Students will gain experience in the concept of generics, advancing their programming capabilities in C.
This module focuses on the implementation of a generic linear search algorithm. Key learning points include:
Students will apply their understanding of generics and data structures to implement a robust linear search function.
This module covers the construction of an integer stack, focusing on constructors and destructors. Key areas include:
Students will strengthen their understanding of object-oriented principles in a procedural language context through stack implementation.
This module highlights ownership issues in memory management. Topics include:
Students will learn strategies for proper memory management and the implications of ownership on program stability.
This module provides insights into heap management, focusing on how allocational information is stored. Key discussions include:
Students will gain practical knowledge of memory allocation and management, crucial for optimizing performance in C/C++ applications.
This module explains how code snippets are translated into assembly instructions. It covers:
Students will learn the fundamentals of low-level programming and how high-level constructs are represented in assembly.
This module provides detailed insights into activation records, focusing on memory layout during function calls. Topics discussed include:
Students will enhance their understanding of function execution and stack management, which is vital for optimizing code performance.
This module transitions students from C code generation to C++ code generation, focusing on swap implementation. Key points include:
Students will grasp the differences between C and C++ in code generation and memory management techniques.
This module introduces preprocessing commands in C/C++. Key learning objectives include:
Students will become proficient in using preprocessing commands to enhance the flexibility and efficiency of their code.
This module reviews the compilation process of a simple program into an object file. Key points include:
Students will gain insights into the challenges and nuances of the compilation and linking phases in C/C++ programming.
This module explores the differences between sequential and concurrent programming. Key concepts covered include:
Students will learn how concurrent programming enables more efficient processing through effective resource management.
This module transitions from sequential to concurrent programming through a ticket sale example. It covers:
Students will apply threading concepts to create more efficient and responsive applications.
This module reviews semaphore concepts, focusing on their syntax and usage in multithreading scenarios. Key topics include:
Students will learn to manage concurrent processes effectively through semaphore usage.
This module provides a detailed review of the Dining Philosopher problem, emphasizing concurrency challenges. Topics include:
Students will deepen their understanding of concurrency issues through practical examples and theoretical implications.
This module introduces the Ice Cream Store Problem, involving multiple threading scenarios. Key learning points include:
Students will apply concurrency concepts to a real-world scenario, enhancing their understanding of multithreaded design.
This module provides an introduction to the functional paradigm using Scheme. It covers:
Students will gain foundational knowledge in functional programming concepts and their practical applications in Scheme.
This module delves into car-cdr recursion problems in Scheme, focusing on practical applications. Key topics include:
Students will enhance their skills in recursive function design and its implications in functional programming.
This module introduces the Kawa development environment and evaluates expressions in Scheme. Key areas include:
Students will learn to navigate the Kawa environment while applying functional programming techniques in practice.
This module focuses on writing recursive power set functions in Scheme. Key topics include:
Students will deepen their understanding of recursion and its applications, while also exploring memory management in Scheme.
This module examines the Scheme memory model, focusing on linked list operations and layout. Key discussions include:
Students will gain insights into memory management and garbage collection in functional programming, enhancing their understanding of language implementations.
This module provides an overview of Python, highlighting its overarching features. Key areas include:
Students will develop foundational skills in Python programming while understanding its versatile paradigms and data structures.
This module dives deeper into Python's object model, covering essential topics such as:
Students will enhance their understanding of Python's object model and learn to implement classes efficiently.
This module examines XML processing in Python, highlighting different processing models. Key points include:
Students will acquire practical skills in XML parsing and data handling using Python, enhancing their programming versatility.
This module serves as an introduction to Haskell, exploring its unique features. Key discussions include:
Students will gain insights into Haskell's paradigms and its approach to programming, broadening their understanding of functional languages.