This course aims to explore fundamental programming language concepts, including activation records, pointers, pointer arithmetic, dynamic memory allocation, and the distinctions between strongly and dynamically typed languages. Additionally, students will delve into the intricacies of subprograms, how subprograms interact, and various parameter passing methods. Through theoretical discussions, practical exercises, and hands-on programming assignments, students will develop proficiency in applying these concepts to solve real-world programming challenges.
Upon successful completion of this course, students will be able to:
- Recognize basic programming language concepts and design issues,
- Relate various attributes of variables to programming languages,
- Apply arithmetic operations to pointers and dynamic memory allocation,
- Explain how information is passed among subprograms via various types of parameter passing,
- Discuss design decisions made on various programming languages,
- Use functional programming paradigm via side-effect-free functions and composition.