Lecture Description
How a Code Snippet is Translated into Assembly Instructions, Store, Load, and ALU Operations, Assembly Optimizations for 4-Byte Addresses, Context-Insensitive Code Translation, Overriding the 4-Byte Default in Assembly Instructions, Translating a For Loop into Assembly, Using Branch Instructions and the PC Register, Pointer/Array Arithmetic in Assembly, Unconditional Branch Instructions (Jumps), How a 4-Byte Assembly Instruction is Encoded in Memory
Course Description
Topics include: Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms; the functional paradigm (using LISP) and concurrent programming (using C and C++); brief survey of other modern languages such as Python, Objective C, and C#.
Prerequisites: Programming and problem solving at the Programming Abstractions level. Prospective students should know a reasonable amount of C++. You should be comfortable with arrays, pointers, references, classes, methods, dynamic memory allocation, recursion, linked lists, binary search trees, hashing, iterators, and function pointers. You should be able to write well-decomposed, easy-to-understand code, and understand the value that comes with good variable names, short function and method implementations, and thoughtful, articulate comments.
Related Resources
Transcript
Course Index
- Introduction to Programming Paradigms Course
- Data Types - Interpretations
- Converting Between Types of Different Sizes and Bit Representations Using Pointers
- Creating a Generic Swap Function for Data Types of Arbitrary Size
- Generic Lsearch - Prototype
- Integer Stack Implementation - Constructor and Destructor
- Problems with Ownership of Memory
- Heap Management - How Information about Allocations are Stored in the Heap
- How a Code Snippet is Translated into Assembly Instructions
- More Detail about Activation Records - Layout of Memory During a Function Call
- Moving from C Code Generation to C++ Code Generation: Basic Swap Example
- Preprocessing Commands
- Review of Compilation Process of a Simple Program
- Sequential Programming vs. Concurrent Programming
- Transitioning from Sequential Programming to Concurrent Programming in the Ticket Sale Example
- Semaphores
- Review of the Dining Philosopher Problem
- Ice Cream Store Problem
- Introduction to the Functional Paradigm (Scheme)
- Car-Cdr Recursion Problem
- Introduction to the Kawa Development Environment: Evaluation of Expressions
- Writing a Recursive Power Set Function in Scheme
- Scheme Memory Model
- Overarching Features of Python
- Python Object Model
- XML Processing and Python
- Introduction to Haskell