Checking date: 18/05/2022

Course: 2022/2023

Systems Architecture
Bachelor in Telecommunication Technologies Engineering (Plan: 445 - Estudio: 252)

Coordinating teacher: MORENO MARCOS, PEDRO MANUEL

Department assigned to the subject: Telematic Engineering Department

Type: Compulsory
ECTS Credits: 6.0 ECTS


Requirements (Subjects that are assumed to be known)
Programming, Systems Programming and Digital electronics.
1. The student must be able to design a software system containing non-trivial data structures, dynamic memory management, processses and interprocess communication techniques and using engineering techniques to translate a set of given high level constraints, derived from a hypothetical industrial setting, into a robust application. 2. The student must be able to understand the process and thread concepts, and understand different concurrency problems and apply the suitable synchronization mechanisms. 3. The student must be able to use proficiently the following industry-category tools: a compiler with different options to generate debugging information and to analyze the diagnostics produced while developing the application, a version controlled system to handle regular development flows, and profiling tools to analyze memory behavior in a software application. 4. The student must be able to: work effectively in a team to execute a project entailing the design of a software application on a mobile device, generate ideas collaboratively in a team to promote the exchange of information, organize the work in a team to optimize its performance and comply with the project requirements, and divide tasks effectively among the team members. 5. The student must be able to: learn autonomously, manage different information sources, generate and value concise information about the tasks accomplished, manage the time of personal work, and present effectively the results derived from the process.
Skills and learning outcomes
Description of contents: programme
1. The C programming language - Basic data types and flow constructions - Structure of a C application. The pre-processor, division in files, creating an executable. - Functions (with several parameters, variadic functions) - Pointer manipulation and pointers to functions. - File I/O 2. Dynamic memory management in C - Dynamic data structures - Memory leaks - Tools for detecting memory leaks 3. Operating Systems - Processes and threads. - Creation of processes. - Interprocess communication: signal, pipes. - Concurrency mechanisms: locks, semaphores, monitors 4. Team project design
Learning activities and methodology
The activities used to underpin the competences and the skills in the course are: - Exercises covering the following topics: design the most appropriate data structure for a functionality in a mobile application, write code fragments to manipulate data structures, read/write fields, process data, creation of processes and threads, interprocess communication, etc, calculate the amount of memory occupied by different data structures. - During the lab sessions code fragments are written, compiled, linked and executed using different compiler options and detect, analyze and correct these programs using the debugger. - During the lab sessions code fragments are written to create, destroy and manipulate data structures using dynamic memory. Students are also requested to divide a given functionality into functions and write their code. - During a nine-week period students are divided into teams and they must execute a project entailing the design of a software application containing multiple milestones, deliverables and objectives. - Write detailed meeting minutes with the action items and final conclusions, exchange information between teammates using chats, forums, email, explain the requirements derived from the specification of a work module, and the solution decided by the team. - Students are requested in several activities throughout the course to search for auxiliary documents to support the information studied in a topic. In their final report, they must acknowledge the information sources they used. - Use of the following tools: Virtual machines, compiler and version control in multiple laboratory sessions. During these activities the teaching staff reviews the student work in the class, supervises the lab sessions, answers questions in course forum, maintains at least one hour a week of office hours and calls for plenary office hours upon demand.
Assessment System
  • % end-of-term-examination 50
  • % of continuous assessment (assigments, laboratory, practicals...) 50

Calendar of Continuous assessment

Basic Bibliography
  • Abraham Silberschatz. Operating system concepts. John Wiley & Sons. 2002
  • C. Michael Pilato, Ben Collins-Sussman y Brian W. Fitzpatrick. Version Control with Subversion, 2nd Edition. O'Reilly Media, Inc.. 2008
  • David Griffiths y Dawn Griffiths. Head First C. O'Reilly Media, Inc.. 2012
  • Michael Kerrisk. The Linux Programming Interface. No Starch Press. 2010
  • Richard Reese. Understanding and Using C Pointers. O'Reilly Media, Inc.. 2013
  • Stephen G. Kochan. Programming in C, Fourth Edition. Addison-Wesley Professional. 2014
Additional Bibliography
  • Brian W. Kernighan, Dennis M. Ritchie. The C programming language. Prentice Hall. 1988
  • Daniel Leuck, Patrick Niemeyer. Learning Java. O'Reilly Media, Inc.. 2013
  • Félix García Carballeira et al.. El lenguaje de programación C : diseño e implementación de programas. Pearson. 2001
  • Jesús Carretero Perez, Felix García Carballeira et al.. Problemas resueltos de programación en lenguaje C. Paraninfo. 2004
  • Joost Visser; Sylvan Rigal, Gijs Wijnholds y Zeeger Lubsen. Building Software Teams. O'Reilly Media, Inc.. 2016
  • Steve McConnell. Code Complete, Second Edition. Microsoft Press. 2004

The course syllabus may change due academic events or other reasons.