The list can have some changes for next academic year. Please be advised that some changes may happen with the programs, number of credits and semester availability of each of these courses.
1st cycle (updated for 2020-2021 academic year)
1st year
– Information Systems
requirements: it is required an introductory and very basic background on Computer Science or in the Management area. Other majors will face trouble on putting into context the class contents.
– Applied Electronics
requirements: it is required knowledge about mathematics concepts, given in “Mathematics I”, such as solving linear equations systems with matrices, simple integration, derivatives, differential equations and complex numbers; it is also required knowledge about physics concepts related to electromagnetism given in “Physics”, including basic electric and magnetic field equations. Other majors won’t be able to understand the class contents.
– Systems Analysis
requirements: it is required having succeeded at “Information Systems” (1st cycle, 1st year), and it is required good knowledge about Information Systems Fundamental Concepts.
– Mathematics II
requirements: it is required knowledge about mathematics concepts given in “Mathematics I”, including solving linear equations systems with matrices, differential equations, integration and derivatives.
2nd year
– Digital Systems
requirements: it is required having succeeded at “Applied Electronics” (1st cycle, 1st year), and it is also required good knowledge about analog electronic circuits analysis methods, as well as practical analog electronics skills to be used in laboratory sessions. The lack of these concepts will make it very hard to follow and understand the class contents.
– Computer Architecture
requirements: it is required having succeeded at “Applied Electronics” (1st cycle, 1st year), it is also required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required knowledge of fundamental data structures and algorithms gained in “Algorithmics and Data Structures I” (1st cycle, 2nd year).
– Algorithms and Data Structures I
requirements: it is required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required knowledge of fundamental data structures and algorithms gained in “Algorithmics and Data Structures I” (1st cycle, 2nd year).
– Programming Languages I
requirements: it is required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required knowledge of basic data structures and algorithms gained in that curricular unit.
– Algorithms and Data Structures II
requirements: it is required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required knowledge of important and fundamental data structures and algorithms gained in “Algorithms and Data Structures I” (1st cycle, 2nd year).
– Programming Languages II
requirements: it is required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required having succeeded at “Programming languages I” (1st cycle, 2nd year) as it is required essential knowledge about advanced programming skills in C gained in that curricular unit.
– Operating Systems
requirements: it is required having succeeded at “Programming languages I” (1st cycle, 2nd year) as it is required essential knowledge about advanced programming skills in C gained in that curricular unit.
– Hardware and Sensors
requirements: it is required having succeeded at “Computer Architecture” (1st cycle, 2nd year) and it is required having succeeded at “Digital Systems” (1st cycle, 2nd year). It is also required having succeeded at “Programming Languages I” (1st cycle, 2nd year) as it is required essential knowledge about advanced programming skills in C gained in that curricular unit.
3rd year
– Databases
requirements: it is required advanced working knowledge of programming languages such as Java, and data structures such as binary trees; it is also required basic knowledge of HTML and HTTP.
– Multimedia I
requirements: it is required good working knowledge of programming languages such as C, Java or JavaScript and HTML.
– Laboratory of Programming
requirements: it is required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required knowledge of advanced data structures and algorithms in C and Java, gained in both “Programming Languages I” (1st cycle, 2nd year) and Programming Languages II (1st cycle, 2nd year).
– Software Engineering
requirements: it is required having succeeded at “Introduction to Algorithms and Programming” (1st cycle, 1st year) and it is required knowledge of fundamental data structures and algorithms in C.
– Multimedia II
requirements: it is required having succeeded at “Multimedia I” (1st cycle, 3rd year), and it is required advanced working knowledge of programming languages such as C, Java or JavaScript and HTML.
– Computer Networks II
requirements: it is required good working knowledge of programming languages such as C.
– Distributed Systems
requirements: it is required knowledge of object-oriented concepts and advanced Java programming skills.
– Integrated Project Laboratory
requirements: it is required having succeeded at most other curricular units such as “System Analysis”; “Programming Languages I”; “Programming Languages II”; “Databases”; “Computer Networks I”; “Multimedia I”; “Software Engineering”; and overall knowledge of object-oriented concepts and advanced Java programming skills, as well as web programming skills including JavaScript and HTML.
2nd Cycle (updated for 2020-2021 academic year)
1st year
– Advanced Databases
requirements: it is required having succeeded at “Databases” (1st cycle, 3rd year), and it is required good working knowledge of object-oriented programming languages such as Java or C#.
– Security and Computer Audit
requirements: it is required knowledge of operating systems, application software construction, and networking and wireless concepts.
– Human Computer Interaction
requirements: a background on Computer Science is required as this course relies on important concepts of software design.
– Mobile Applications Programming
requirements: it is required working knowledge of object-oriented concepts, and advanced Java and C# programming skills
For further information please contact Prof. Nuno M. Ribeiro (nribeiro@ufp.edu.pt)