Guilherme Soares

Guilherme Soares

HomeTeaching

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.

  1. No class

    teacher unavailable

  2. Course plan presentation; reasons for studying languages; domains, criteria, and categories; evolution of major languages and programming paradigms (Sebesta, chs. 1-2)

  3. Formal syntax description: BNF, EBNF, grammars, and parse trees (Sebesta, ch. 3.1-3.3)

  4. Attribute grammars; static and dynamic semantics (Sebesta, ch. 3.4-3.5)

  5. Lexical and syntax analysis; compilation stages and programming environments (Sebesta, ch. 4 and sections 1.7-1.8)

  6. Names, variables, bindings, scope, and lifetime (Sebesta, ch. 5)

  7. Data types, type checking, strong typing, and type equivalence (Sebesta, ch. 6)

  8. Expressions, type conversions, and assignment statements (Sebesta, ch. 7)

  9. Control structures: selection, iteration, and guarded commands (Sebesta, ch. 8)

  10. No class

    Brazilian Independence Day national holiday

  11. Subprograms: local environments, parameter passing, functions, closures, and implementation (Sebesta, chs. 9-10)

  12. Abstract data types, encapsulation, and object-oriented programming fundamentals (Sebesta, chs. 11-12)

  13. Inheritance, composition, polymorphism, and exception handling (Sebesta, chs. 12 and 14.1-14.4)

  14. Mathematical functions, lambda calculus, and functional paradigm fundamentals (Sebesta, ch. 15.1-15.3)

  15. Lisp and introduction to Scheme (Sebesta, ch. 15.4-15.5)

  16. Scheme practice: recursion and list processing (Sebesta, ch. 15.5)

  17. Higher-order functions: map, filter, and reduce (Sebesta, ch. 15.5-15.6)

  18. ML and pattern matching (Sebesta, ch. 15.7)

  19. Haskell: type system and list comprehensions (Sebesta, ch. 15.8)

  20. No class

    Our Lady of Aparecida national holiday

  21. Haskell: higher-order functions and lazy evaluation; F# overview (Sebesta, ch. 15.8-15.9)

  22. Science and Technology Week - guided, non-assessment activity: functional support in imperative languages (Sebesta, ch. 15.10)

  23. Science and Technology Week - non-assessment comparative seminar: functional and imperative paradigms (Sebesta, ch. 15.11)

  24. Integrated functional programming lab: higher-order functions, patterns, and lazy evaluation (Sebesta, ch. 15)

  25. Logical statements, predicate calculus, theorem proving, and unification (Sebesta, ch. 16.1-16.4)

  26. No class

    All Souls' Day national holiday

  27. Prolog: origins, basic elements, limitations, and applications (Sebesta, ch. 16.5-16.8)

  28. Event-driven programming: callbacks and event handling (Sebesta, ch. 14.5-14.7)

  29. Promises and asynchronous programming (syllabus Unit 6; supplementary reading)

  30. Concurrency fundamentals, parallelism, and subprogram-level concurrency (Sebesta, ch. 13.1-13.2)

  31. No class

    National Day of Zumbi and Black Consciousness holiday

  32. Threads, semaphores, and monitors (Sebesta, ch. 13.3-13.4 and 13.7-13.8)

  33. Coroutines and message passing (Sebesta, ch. 9.13 and 13.5)

  34. Concurrency in functional languages, statement-level parallelism, and distributed computing (Sebesta, ch. 13.9-13.10; supplementary reading)

  35. Integrative seminar: critical comparison of paradigms and languages using the criteria from ch. 1

  36. Course synthesis, final review, activity feedback, and end-of-semester wrap-up

  37. Special exams

    no regular classes; any course exam date and time to be confirmed

  38. Assessment

    Exam 1 - Units 1 to 3 (20 points)

  39. Assessment

    Exam 2 - Unit 4, functional programming (20 points)

  40. Assessment

    Exam 3 - Units 5 and 6, logic, events, and concurrency (20 points)

  41. Assessment

    Short exercises - 15 two-point activities (30 points total)

  42. Assessment

    Practical Work 1 - guided functional/logic mini-lab (5 points)

  43. Assessment

    Practical Work 2 - guided event/concurrency mini-lab (5 points)

Programming Languages - Guilherme Soares