Table of Contents
The course Systems Architecture is taught in the first semester of the second course of the Degrees of Telematic, Communication Systems and Audiovisual systems engineering. It has a load of 6 credits and 50+50 minute sessions take place twice a week.
The teaching staff involved in this course is:
Professor | Responsability |
---|---|
Marisol García Valls | (Coordinator) Responsible of master and reduced group 65/69/79 in english: GISC(EN)-2018. (Coordinator) Responsible of master and reduced groups 66/67: GISA-2018. |
María Blanca Ibáñez | (Coordinatora) Responsible of master group 61/71 and reduced group 71: GISC(ES)-2018. |
Cristina Catalán Aguirre | Group 65/69/79 in english: GISC(EN)-2018. |
Javier Fernandez Galván | Responsible of group 61: GISC(ES)-2018. |
Victor Seoane Mérida | Group 71: GIT-2018. |
José Sánchez Sánchez | Group 66: GISA-2018. |
Cristina Catalán García | Group 67: GISA-2018 |
The office hours are published in Aula Global. There are two alternatives for tutoring sessions. In person at the hours defined by each professor (which we kindly ask you to observe), or posting in the course forum. As a thumb of rule, no questions will be accepted through personal email.
The current academic calendar is available in the following url: Academic Calendar .
The course has a set of activities with a common thread in the following scenario.
The company SAUCEM Inc. develops applications for last generation mobile devices. Its products include platforms and programs to execute in today's mobile devices, but also those that will be common in tomorrow's devices. It has a rich portfolio of applications that are very popular and with an increasing market share.
The company has decided that the most suitable programming languages to develop applications in this device are C, C++ and Python, and it has divided the department in three work groups, one for each language. The development processes use several tools such as version control systems, integrated development environments and tools for cross compilation.
Your work in this course is part of the C programming group in the company. Your responsibility is to learn how to program and develop applications in C, use the typical set of tools for development, acquire experience with teamwork (oriented, obviously, to the development of applications for this device), and the acquisition of self-learning skills.
To achieve that, the training plan payed by the company includes attending the work sessions as the one in this course both theory and labs. Attendance is mandatory by the company.
The learning outcomes to obtain in this course are:
The student must be able to design a software system using the C Programming Language containing non-trivial data structures, dynamic memory management, and using engineering techniques to translate a set of given high level constraints, derived from a hypothetical industrial setting, into a robust application.
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, an Integrated Development Environment (IDE) to implement a software system, a version controlled system to handle regular development flows, a cross compiler to create multidevice versions of an application and conduct experiments to verify device compatibility, and profiling tools to analyze memory behavior in a software application.
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.
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.
Each of these learning outcomes contains a list of more concrete objectives. A more detailed description is included in the document “ Learning Outcomes and Course Objectives ”.
The organization and adopted methodology for this course is oriented to let you achieve the learning outcomes described in Section 3 following a continuous evaluation paradigm. In order for you to achieve these objectives, we have assumed the following:
You are capable of writing programs with multiple functions or methods in multiple files.
You are familiar with non-trivial data structures and knows how to perform basic operations over them.
You have no experience on developing C applications.
You have no previous knowledge about the Linux environment (but if you do, it will facilitate the course learning curve).
You will spend two hours preparing each one of the course sessions. During these two hours, you will perform the proposed activities and if any problems or questions appear, you solve them either during office hours or in the course forum.
You know how to distribute the workload derived from the course effectively throughoug the week and make sure that time is truly productive.
The course content motivates you and you are willing to take the weekly effort derived from it.
If you decide to participate in the continuous evaluation, you will do so all the way through the end of the course.
From the previous conditions it can be deduced that unless you passed both programming courses in the first year, you should not take Computer Architecture. You may know somebody that successfully did it, but the effort required and the high probability of failure make this strategy inadvisable.
The topics in which the course is divided are:
Basic data types, functions and flow constructions
Structure of a C application. The pre-processor, file division, creating an executable.
Pointer manipulation.
Dynamic memory management in C.
Dynamic data structures
Memory leaks
Tools for detecting memory leaks
Computer architecture and Operating Systems
Kernel, processes, file system
Main libraries
Requirement analysis
Decomposing functionality at a high level
Top-down design
We grade the course following continous evaluation (60%) followed by a final exam (40%). You have to take a mimum of a 40% in the final exam to pass. During the course, you will obtain points in several tests in the theory sessions (10%) and the lab sessions (50%). Optionally, each group may obtain an “ additional 10% ” via extra activities proposed by the instructor.
The work in groups is done in two ways. The first (covering the first three course topics) is done with a partner that you choose. In the second, the one that includes the implementation of the project, the teaching staff creates steams of four or five students. The following figure shows these two ways combined with the points distributed among course topics.
The evaluation methods we typically use are:
Exam with test questions. Used in master sessions for the announced tests.
Written exam in which you have to write a code fragment (data structure and/or functions).
Submission of code fragments. Used for the lab sessions and the project
As you can see, the total sum of points used to obtain the final grade of the course is 110 instead of 100.
The final score for the course is obtained with the formulas shown in the following table:
Condition | Final Score |
---|---|
If Final Examen (EF) < 40% of the maximum score | FAIL |
If EF >= 40% of the maximum score | EF+PR (ORD.), MAX(EF+PR, EF.100%)(EXTR.) |
The course is passed if the final score is greater or equal to 50. With this policy, individual work is valued more than group work, unless a certain level is obtained in the first one. If that is the case, a second weighting is considered and the higher one is selected.
Aside from the continuous evaluation, you may also opt to take the final exam at the end of the course (in which the current regulations stablish that only 60% of the score is considered) and ignore the continuous evaluation.
Important points to remember from this document:
The activities in the course are all conceived as if you are working for the development department of a company that creates applications written in C.
As the sessions have previous activities, we count on you using extensively both the forum and the office hours.
The course objectives are: write programs in C, get acquainted with the C interfaces, use industry-class development tools, work colaboratively and increase the self-learning capacity.
We strongly recommend that if you have not passed the programming courses in the first year, do not attempt to take this course because the objectives will be significantly more difficult to achieve.
The course has theory and lab sessions. In the first ones we study the main concepts and solve exercises. In the second ones, we practice the techniques you just learned.
We recommend that you have your development environment (command interpreter + editor) always ready to check some code, write code fragments, check the solution of an exercise, etc.
The lab sessions will be all done in groups. The first half in groups of two people selected by you, and the second half groups of four people selected by the teaching staff.
You must carefully plan your personal study sessions during the week so that the material is covered before the class.
The evaluation policy consists of 40%+60%+10% with a minimum of 40% in the final exam.
Numerous exercises and problems will be solved throughout the course. It is highly advisable that you always have the development environment ready to verify the results.