The objective of this course is to study 
				the properties of programming languages in general, learn syntax 
				and semantics of programming languages, learn basic constructs that 
				are common to all languages, examine some of these constructs and 
				concepts for specific languages, introduce the main paradigms of 
				computation, languages representative of these paradigms, techniques 
				of implementing various programming language constructs, as well 
				as basic concepts relating to the specification of programming languages.
				
Object Oriented Programming
| Sebesta, Robert W. Concepts of Programming Languages, 11th ed, Addison-Wesley, 2018 (html). | 
 
 | 
- Michael Scott. Programming Language Prgramatics, 
			4th edition, Morgan Kaufmann, San Francisco, California, 2015. 
- 
			R. Toal, R. Rivera, A. Schneider, and E. Choe, Programming Language 
			Explorations, CRC Press, 2017. 
- Pratt, T.W. & M.V.Zelkowitz. Programming 
			Languages, Design and Implementation. Prentice Hall, 4th ed., 2001.
			
| Evaluation Tool | Weight in % | 
|---|---|
| Homework Assignments, Presentations & Projects | 20 | 
| In-term Exams - Midterms - Quizes | 35 | 
| Final | 45 | 
| WEEK | TOPIC(S) | 
|---|---|
| 1 | Introduction | 
| 2 | Evolution of Major Programming Languages | 
| 3 | Describing Syntax and Semantics | 
| 4 | Lexical and Syntax Analysis | 
| 5 | Names, Bindings, Type Checking, and Scopes | 
| 6 | Data Types | 
| 7 | Expressions and Assignment Statements | 
| 8 | Exam Week | 
| 9 | Statement-Level Control Structures and Subprograms | 
| 10 | Implementing Subprograms, Abstract Data Types and Encapsulation Constructs | 
| 11 | Support for Object-Oriented Programming | 
| 12 | Concurrency | 
| 13 | Exception and Event Handling | 
| 14 | Functional and Logic Programming Languages |