Programming Languages
Course schedule for the 2026.2 semester. Materials will be added throughout the semester.
Course lessons and materials will be added throughout the semester.
- No class
teacher unavailable
Course plan presentation; reasons for studying languages; domains, criteria, and categories; evolution of major languages and programming paradigms (Sebesta, chs. 1-2)
Formal syntax description: BNF, EBNF, grammars, and parse trees (Sebesta, ch. 3.1-3.3)
Attribute grammars; static and dynamic semantics (Sebesta, ch. 3.4-3.5)
Lexical and syntax analysis; compilation stages and programming environments (Sebesta, ch. 4 and sections 1.7-1.8)
Names, variables, bindings, scope, and lifetime (Sebesta, ch. 5)
Data types, type checking, strong typing, and type equivalence (Sebesta, ch. 6)
Expressions, type conversions, and assignment statements (Sebesta, ch. 7)
Control structures: selection, iteration, and guarded commands (Sebesta, ch. 8)
- No class
Brazilian Independence Day national holiday
Subprograms: local environments, parameter passing, functions, closures, and implementation (Sebesta, chs. 9-10)
Abstract data types, encapsulation, and object-oriented programming fundamentals (Sebesta, chs. 11-12)
Inheritance, composition, polymorphism, and exception handling (Sebesta, chs. 12 and 14.1-14.4)
Mathematical functions, lambda calculus, and functional paradigm fundamentals (Sebesta, ch. 15.1-15.3)
Lisp and introduction to Scheme (Sebesta, ch. 15.4-15.5)
Scheme practice: recursion and list processing (Sebesta, ch. 15.5)
Higher-order functions: map, filter, and reduce (Sebesta, ch. 15.5-15.6)
ML and pattern matching (Sebesta, ch. 15.7)
Haskell: type system and list comprehensions (Sebesta, ch. 15.8)
- No class
Our Lady of Aparecida national holiday
Haskell: higher-order functions and lazy evaluation; F# overview (Sebesta, ch. 15.8-15.9)
Science and Technology Week - guided, non-assessment activity: functional support in imperative languages (Sebesta, ch. 15.10)
Science and Technology Week - non-assessment comparative seminar: functional and imperative paradigms (Sebesta, ch. 15.11)
Integrated functional programming lab: higher-order functions, patterns, and lazy evaluation (Sebesta, ch. 15)
Logical statements, predicate calculus, theorem proving, and unification (Sebesta, ch. 16.1-16.4)
- No class
All Souls' Day national holiday
Prolog: origins, basic elements, limitations, and applications (Sebesta, ch. 16.5-16.8)
Event-driven programming: callbacks and event handling (Sebesta, ch. 14.5-14.7)
Promises and asynchronous programming (syllabus Unit 6; supplementary reading)
Concurrency fundamentals, parallelism, and subprogram-level concurrency (Sebesta, ch. 13.1-13.2)
- No class
National Day of Zumbi and Black Consciousness holiday
Threads, semaphores, and monitors (Sebesta, ch. 13.3-13.4 and 13.7-13.8)
Coroutines and message passing (Sebesta, ch. 9.13 and 13.5)
Concurrency in functional languages, statement-level parallelism, and distributed computing (Sebesta, ch. 13.9-13.10; supplementary reading)
Integrative seminar: critical comparison of paradigms and languages using the criteria from ch. 1
Course synthesis, final review, activity feedback, and end-of-semester wrap-up
- Special exams
no regular classes; any course exam date and time to be confirmed
- Assessment
Exam 1 - Units 1 to 3 (20 points)
- Assessment
Exam 2 - Unit 4, functional programming (20 points)
- Assessment
Exam 3 - Units 5 and 6, logic, events, and concurrency (20 points)
- Assessment
Short exercises - 15 two-point activities (30 points total)
- Assessment
Practical Work 1 - guided functional/logic mini-lab (5 points)
- Assessment
Practical Work 2 - guided event/concurrency mini-lab (5 points)