Checking date: 28/04/2023


Course: 2023/2024

Systems Architecture
(15376)
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

Course:
Semester:




Requirements (Subjects that are assumed to be known)
Programming, Systems Programming and Digital electronics.
Objectives
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 individually or in a team, 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. Design of an application - Analysis of requirements - Ascending decomposition - Descending 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 the lab sessions, requirements derived from the specifications provided in exercises will be analyzed and the design of the solution will be worked on. - Students are requested in several activities throughout the course to search for auxiliary documents to support the information studied in a topic. - 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 of the students, 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
Recursos electrónicosElectronic Resources *
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
(*) Access to some electronic resources may be restricted to members of the university community and require validation through Campus Global. If you try to connect from outside of the University you will need to set up a VPN


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