
Foundations of Software Engineering
Code: 102708Credits: 3
| Degree programme | Type | Course |
|---|---|---|
| Electronic Engineering for Telecommunications | OB | 2 |
| Telecommunication Systems Engineering | OB | 2 |
Contact lecturer
- Name :
- Marc Esteve García
- Email :
- marc.esteve.garcia@uab.cat
Group languages
You can consult this information at the end of the document.
Prerequisites
No prior programming knowledge is required.
Objectives
The aim of the course is to introduce students to the fundamentals of software engineering, with particular emphasis on object-oriented analysis and design, as well as problem-solving through algorithms and structured programming in Python. The course seeks to develop students’ ability to model, implement, and validate simple software solutions, while promoting good programming practices and autonomy in problem-solving.
Learning outcomes
Electronic Engineering for Telecommunications
- KU098 (Distinguish the basic programming patterns.) Distinguish the basic programming patterns.
- SU105 (Use the theoretical foundations of programming and programming languages to develop software systems. Understand the basic architecture of a computer, its functional units and the theoretical foundations of programming.) Use the theoretical foundations of programming and programming languages to develop software systems. Understand the basic architecture of a computer, its functional units and the theoretical foundations of programming.
- SU106 (Use the fundamentals of programming in telecommunication networks, systems and services.) Use the fundamentals of programming in telecommunication networks, systems and services.
- SU107 (Design and implement databases when developing software applications, and specifically applied to information systems.) Design and implement databases when developing software applications, and specifically applied to information systems.
Telecommunication Systems Engineering
- KU098 (Distinguish the basic programming patterns.) Distinguish the basic programming patterns.
- SU105 (Use the theoretical foundations of programming and programming languages to develop software systems. Understand the basic architecture of a computer, its functional units and the theoretical foundations of programming.) Use the theoretical foundations of programming and programming languages to develop software systems. Understand the basic architecture of a computer, its functional units and the theoretical foundations of programming.
- SU106 (Use the fundamentals of programming in telecommunication networks, systems and services.) Use the fundamentals of programming in telecommunication networks, systems and services.
- SU107 (Design and implement databases when developing software applications, and specifically applied to information systems.) Design and implement databases when developing software applications, and specifically applied to information systems.
Contents
- Introduction to programming and the basic paradigms of software development.
- Programming patterns and fundamental control structures.
- Theoretical foundations of programming and programming languages.
- Basic computer architecture and functional units.
- Programming applied to telecommunications systems, networks, and services.
- Basic database concepts and an introduction to the design and implementation of applications with data persistence.
- Problem-solving through structured and modular programming techniques.
- Development of practical examples and applied case studies in the field of telecommunications.
Learning activities and methodology
| Title | Hours | ECTS | Learning outcomes |
|---|---|---|---|
| Lectures, problem-solving sessions and laboratory work | 30 | 1.2 | KU098, SU105, SU106, SU107 |
| Independent study, problem solving and practical assignments | 23 | 0.92 | KU098, SU105, SU106, SU107 |
| Supervised development of exercises and projects | 22 | 0.88 | KU098, SU105, SU106, SU107 |
- Directed activities: in-person classroom and laboratory hours.
- Supervised activities: tutorials and academic follow-up.
- Autonomous activities: the remaining hours required to complete the total workload of the course.
Assessment
Continuous assessment activities
| Title | Weight | Hours | ECTS | Learning outcomes |
|---|---|---|---|---|
| Individual programming assignment | 15% | 0 | 0 | KU098, SU105, SU106, SU107 |
| Integrative Python programming project | 35% | 0 | 0 | KU098, SU105, SU106, SU107 |
| Individual test 1 | 25% | 0 | 0 | KU098, SU105 |
| Individual test 2 | 25% | 0 | 0 | KU098, SU105, SU106, SU107 |
The course will be assessed on a continuous basis through different forms of evidence of learning, combining individual tests, practical activities, and the development of an integrative Python project.
The assessment activities are as follows:
Individual test 1: a theoretical and practical test covering the first topics of the course. It accounts for 25% of the final grade.
Individual test 2: an integrative theoretical and practical test covering the content studied throughout the course. It accounts for 25% of the final grade.
Individual programming assignment: the analysis, implementation, and validation of a programming exercise in Python. It accounts for 15% of the final grade.
Integrative Python programming project: the development of a simple application integrating the main topics covered in the course, including structured and modular programming, object-oriented programming, data persistence, error handling, testing, and code documentation. It accounts for 35% of the final grade.
The final grade will be calculated using the following formula:
Final grade = 0.25 × Test 1 + 0.25 × Test 2 + 0.15 × Individual assignment + 0.35 × Integrative project
To pass the course, students must obtain a final grade of at least 5 out of 10. They must also achieve a minimum average grade of 4 out of 10 across the two individual tests. If this requirement is not met, the maximum final grade for the course will be 4.7.
The individual assignment and the project may include different stages, partial submissions, or validation activities. Teaching staff may request an explanation, a brief oral defence, or a modification of the code in order to verify authorship and the level of understanding. Activities not submitted by the established deadline will receive a grade of zero, except in duly justified cases.
The individual tests may be reassessed through a resit examination. The grade obtained will replace the grade of the corresponding test. The individual assignment and the integrative project cannot be reassessed, as they are developed and assessed progressively throughout the course.
The schedule of activities, submission deadlines, and test dates will be published on the Virtual Campus. The procedure and period for reviewing grades will be specified for each assessment activity.
Any irregularity that may affect the grading of an activity, including copying, plagiarism, impersonation, or the unauthorised use of artificial intelligence tools, will result in the application of the measures established in the UAB academic regulations. Where the use of such tools is permitted, students must declare it and be able to explain and defend the work submitted.
Bibliography
- Think Python: How to Think Like a Computer Scientist — Allen B. Downey (allendowney.github.io)
- Python Crash Course, 3rd Edition — Eric Matthes (nostarch.com)
- Python for Everybody — Charles R. Severance (py4e.com)
- The Python Tutorial — Python Software Foundation (Python documentation)
- Software Engineering at Google — Titus Winters, Tom Manshreck i Hyrum Wright (abseil.io)
Software
- Visual Studio Code
- Python
- Jupyter
- Github
- Browser
Course groups and languages
The information provided is provisional until November 30. After this date, you will be able to consult the language of each group through this link. To access the information, you will need to enter the course CODE
| Type of teaching | Group | Language | Semester | Shift |
|---|---|---|---|---|
| (TE) Theory | 31 | Catalan/Spanish | first semester | morning-mixed |
| (PAUL) Classroom practices | 311 | Catalan/Spanish | first semester | morning-mixed |
| (PLAB) Practical laboratories | 311 | Catalan/Spanish | first semester | morning-mixed |
| (PAUL) Classroom practices | 312 | Catalan/Spanish | first semester | morning-mixed |
| (PLAB) Practical laboratories | 312 | Catalan/Spanish | first semester | morning-mixed |