Introduction to Programming
Objectives
Knowledge
Understand the programming constructs included in the Java language fragment covered in the course.
Know the components and basic tools of a software development environment (editor, compiler, etc) and their role.
Application
Read and explain / mentally simulate the functionality of code fragments written in the Java programming language.
Design and implement correctly simple algorithms.
Build a small application, using the covered Java language fragment and the methodology defined in this course.
Develop well-organized small-sized programs, following a given set of standards.
Correctly use, to the expected level, programming tools and interpret their results (error messages, etc).
Do as a team a programming mini-project, using the skills acquired in the course.
Soft-Skills
Develop disciplined work and deadline meeting skills.
Develop a concern with rigour and the execution of work plans, following previously defined methods.
Develop team work skills.
General characterization
Code
10637
Credits
9.0
Responsible teacher
Artur Miguel de Andrade Vieira Dias, Margarida Paula Neves Mamede
Hours
Weekly - 9
Total - 72
Teaching language
Português
Prerequisites
None
Bibliography
David J. Eck, Introduction to Programming Using Java, 8th edition, Online book, http://math.hws.edu/javanotes, 2021.
Cay S. Horstmann, Java Concepts: Early Objects, 8th edition, Wiley, 2019.
Walter Savitch, Java: An Introduction to Problem Solving and Programming, 8th edition, Pearson, 2018.
Java 8 (API): https://docs.oracle.com/javase/8/docs/api/
Teaching method
Teaching consists in lectures and exercice classes (in a laboratory). Lectures present the concepts, motivated by running examples used to illustrate and to let the students to apply the constructions.
In the labs, students solve consolidation exercices to practice with the concepts learned and used in the lectures.
In a mini-project the students develop a simple application, using most of the concepts learned in the classes. The project is developed also in class, allowing the teaching staff to address the student difficulties, as well as to provide support to better code organisation and quality.
Evaluation method
Assessment Components
Assessment has two components: the laboratory component and the theoretical-practical component. All assessment elements are graded between 0 and 20 points.
Laboratory Component
The laboratory component comprises two programming projects, some programming exercises, and some programming challenges. All these assignments will be delivered on the Mooshak platform. Mooshak is considered to accept a program if the program produces the correct results with the tests performed.
The first programming project is developed individually and the second programming project is done in teams of two students. In both projects, there may be an individual discussion, possibly in person, to assess the knowledge that each student has about the work he/she has delivered. A student''s grade in a project depends on the work delivered and his/her performance in the discussion. Consequently, in the second project, the grades of the two team elements can be different.
The project grade (Pgrade) is the weighted mean of the student''s grades in the two projects (P1 e P2):
In order to succeed (and to have access to the exam), it is required that Pgrade >= 9.5 (out of 20).
In most hands-on classes, students must solve exercises and submit the corresponding programs on the Mooshak platform. The grade of these exercises (Egrade) counts towards 1 point of the final grade, assigned if Mooshak accepts at least 78% of the number of proposed exercises, rounded to nearest whole number. For instance, if 7 exercises are proposed, since 0.78 x 7 = 5.46, the grade of the exercises will be:
-
Egrade = 0, if the number of exercises accepted by Mooshak is < 5;
-
Egrade = 1, if the number of exercises accepted by Mooshak is >= 5.
Every few weeks, students will address a challenge, also to be submitted on the Mooshak platform. The grade of these challenges (Dgrade) counts towards 1 point of the final grade, assigned if Mooshak accepts at least 78% of the number of challenges, rounded to nearest whole number. For instance, if there are 6 challenges, since 0.78 x 6 = 4.68, the grade of the challenges will be:
-
Dgrade = 0, if the number of challenges accepted by Mooshak is < 5;
-
Dgrade = 1, if the number of challenges accepted by Mooshak is >= 5.
Theoretical-Practical Component
The theoretical-practical component comprises two tests. If the weighted mean of the test grades is less than 9.5 and Pgrade >= 9.5, students can do a final exam. The tests and the exam are written, closed-book, and done individually in person. Electronic devices (e.g. calculators, mobile phones, tablets, smartwatches, and computers) are not allowed.
The theoretical-practical component grade (TPComp) is the weighted mean of the test grades (T1 and T2) or the exam grade (Ex):
In order to succeed, it is required that TPComp >= 9.5 (and Pgrade >= 9.5).
Final Grade
The final grade (F), defined only if Pgrade >= 9.5, is:
-
F = TPComp, if TPComp < 9.5;
-
F = 0.35 Pgrade + Egrade + Dgrade + 0.55 TPComp, if TPComp >= 9.5 .
All grades (P1, P2, Pgrade, T1, T2, Ex, and TPComp) are rounded to the nearest tenth, except the final grade (F) which is rounded to the nearest whole number.
Subject matter
1. Computers and programs
2. Objects and operations
3. Classes and basic data types
4. State manipulation
5. Decision constructs
6. User interaction (I/O)
7. Loops and introduction to recursion
8. Structure of an application
9. Vectors and related algorithms
10. Iterators
11. Sorting and searching
12. File manipulation
13. Matrices
14. Applications with several classes
15. Basic software development principles