Checking date: 17/01/2025


Course: 2024/2025

Systems Architecture
(15376)
Academic Program of Telecommunication Engineering via Bachelor in Telecommunication Technologies Engineering (Plan: 511 - 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
CB1: Students have demonstrated possession and understanding of knowledge in an area of study that builds on the foundation of general secondary education, and is usually at a level that, while relying on advanced textbooks, also includes some aspects that involve knowledge from the cutting edge of their field of study CB2: Students are able to apply their knowledge to their work or vocation in a professional manner and possess the competences usually demonstrated through the development and defence of arguments and problem solving within their field of study. CG3: Knowledge of basic and technological subject areas which enable acquisition of new methods and technologies, as well as endowing the technical engineer with the versatility necessary to adapt to any new situation. CG11: Basic concepts of computer use and programming, operating systems, databases and IT programs with engineering applications. ECRT7: Knowledge and use of the fundamentals of programming in telecommunication networks, systems and services. RA1: Knowledge and understanding of the general fundamentals of engineering, scientific and mathematical principles, as well as those of their branch or specialty, including some knowledge at the forefront of their field. RA5: Applications. Graduates will have the ability to apply their knowledge and understanding to solve problems, conduct research, and design engineering devices or processes. These skills include knowledge, use and limitations of materials, computer models, process engineering, equipment, practical work, technical literature and information sources. They must be aware  of all the implications of engineering practice: ethical, environmental, commercial and industrial.
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


Extraordinary call: regulations
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.