Guilherme Soares

Guilherme Soares

HomeTeaching

Computer Programming I

Course lessons, materials, and the 2026 annual schedule.

Lessons 1 and 2 taught by Professor Diego Ascânio.

  1. 01

    Introduction

    Lesson 1 taught by Professor Diego Ascânio.

  2. 02

    Conditional structures

    Lesson 2 taught by Professor Diego Ascânio.

    Lesson slides
  3. 03

    Conditions — review and part 2

    Next lesson.

    Lesson slides
  4. 04

    Loops

    Next lesson.

    Lesson slides
  5. 05

    Arrays

    Lesson material.

    Lesson slides
  6. 06

    Strings and dates

    Lesson material.

    Lesson slides
  1. Course presentation and introduction to programming

    Course objectives, assessment criteria, tools, lab routine, and the role of programming in the technical program. Environment setup and execution of the first program.

  2. Computational thinking and algorithms

    Decomposition, pattern recognition, abstraction, and algorithm design using natural language and pseudocode.

  3. Propositional logic and Boolean expressions

    Propositions, true and false values, negation, conjunction, disjunction, truth tables, and Boolean expressions in programs.

  4. Variables, data types, and operators

    Variables, constants, numeric and text types, assignment, arithmetic operators, precedence, type conversion, and output formatting.

  5. Data input and output

    Data input and validation, output messages, and program organization through input, processing, and output.

  6. Review of sequential algorithms and problem statements

    Review of variables, types, operators, and input/output. Problem interpretation by identifying input data, processing, and expected output.

  7. Conditional structures: if and if/else

    Decision flow, simple and compound conditions, and problems involving classification, comparison, and rule application.

  8. Chained conditionals and logical operators

    If/elif/else structures, relational and logical operators, and compound expressions applied to value ranges, intervals, and combined rules.

  9. Conditional best practices and debugging

    Clarity, indentation, error messages, desk checking, edge cases, test sets, and conditional refactoring.

  10. Repetition with while

    Condition-controlled loops, variable updates, sentinels, infinite-loop prevention, counting, and running totals.

  11. Repetition with for and counters

    Counter-controlled repetition, numeric sequences, predictable traversals, sums, countdowns, and averages.

  12. Accumulators, counters, minimum, maximum, and average

    Repetition patterns with accumulators and counters for minimum, maximum, average, occurrences, conditional sums, and simple reports.

  13. Nested loops

    Nested loops applied to tables, text patterns, grids, and two-dimensional traversals.

  14. Flow control in loops

    Use of break and continue, input validation, and interactive menus with in-memory data.

  15. Integrated review: conditionals and loops

    Integration of decisions, logical operators, and loops in progressively challenging problems.

  16. Assessment

    Practical assessment 1

    Assessment of sequential algorithms, conditionals, logical operators, and repetition structures, followed by analysis of the main improvement areas.

  17. Functions: motivation and modularization

    Program organization with functions and procedures, reduction of repeated code, and reuse of recurring calculations.

  18. Parameters, return values, and scope

    Parameters, return values, the distinction between printing and returning, local and global variables, validation, and function composition.

  19. Problem decomposition with functions

    Decomposition of larger programs into smaller functions, definition of responsibilities, and solution composition.

  20. 3rd term · 04/08–29/09/2026
  21. Assessment plan · 20 points

    Assessed exercises: 8 points (40%); practical assignment: 4 points (20%); exam: 8 points (40%).

  22. Lab: modularization with functions

    Application of functions, parameters, and return values in a modular program, including input validation and reusable calculations.

  23. Introduction to recursion

    Base cases, recursive calls, and comparison of iterative and recursive solutions for factorial, counting, and summation problems.

  24. Lab: recursion and iterative solutions

    Implementation and comparison of recursive and iterative solutions for factorials, sums, counting, and simple sequences.

  25. Arrays: creation, indexes, and traversal

    One-dimensional structures, indexes, access, updates, and array traversal with loops.

  26. Matrices: rows, columns, and traversal

    Two-dimensional structures, organization into rows and columns, and traversal with nested loops.

  27. Exercise review: matrices

    Solution and analysis of the matrix exercise, including indexes, traversal, test cases, and alternative implementations.

  28. Assessment

    Assessed exercise 1 — Matrices (4 points)

    Individual matrix problems involving traversal, search, sums, counting, diagonals, and row and column totals.

  29. Records and practical assignment introduction

    Records, dictionaries, and simple objects for representing entities with fields of different types. Start of the practical assignment: an in-memory registry system using heterogeneous structures.

  30. Assessment

    Assessed exercise 2 — Records (2 points)

    Creation, lookup, and update of student, product, or contact records, using suitable data types and field validation.

  31. No class

    Brazilian Independence Day

    Brazilian Independence Day national holiday.

  32. Assessment

    Assessed exercise 3 — Lists of records (2 points)

    A collection of records with entity insertion, listing, search, and updates, organized with functions and data validation.

  33. Lab: practical assignment development

    Development of the in-memory registry system with a list of records, menu, creation, listing, search, update, deletion, and data validation.

  34. Assessment

    Practical assignment due — Record-based registry (4 points)

    An in-memory registry system using heterogeneous structures and functions. Requirements: menu, creation, listing, search, update, deletion, and data validation.

  35. Review for the 3rd-term exam

    Review of functions, recursion, arrays, matrices, records, and lists of records, including integrated problems and test-case analysis.

  36. Assessment

    3rd-term exam — 8 points

    Exam covering the term content: functions, recursion, arrays, matrices, records, and lists of records.

  37. Assessment feedback and solution analysis

    Analysis of the assessment solutions, identification of the main errors, and review of problem-solving strategies.

  38. Recovery and 3rd term wrap-up

    Review of arrays, matrices, and records, with a recovery activity and synthesis of the term's content.

  39. End of the 3rd term · 29/09/2026
  40. Files: basic reading and writing

    Data persistence through opening, reading, writing, and closing text and CSV files.

  41. CSV files and registry integration

    Tabular data organization in CSV, separators, headers, row processing, and registry persistence.

  42. Final project: specification and planning

    Definition of theme, minimum requirements, features, data structures, persistence, and project decomposition into functions.

  43. Final project: guided development I

    Initial project structure with a menu, core functions, data entry, and data listing.

  44. Final project: guided development II

    Search, filters, validation, file persistence, incremental testing, and bug fixing.

  45. Assessment

    Project presentations and assessment

    Feature demonstration and explanation of implementation decisions. Assessment of code organization, functions, data structures, files, and solution clarity.

  46. Wrap-up, general review, and recovery

    Synthesis of variables, conditionals, loops, functions, lists, records, and files, with self-assessment and review of topics that need reinforcement.

Resources

Computer Programming I - Guilherme Soares