Carlos III University of Madrid

Telematic/Audiovisual Syst./Communication Syst. Engineering

Systems Architecture

September 2010 - January 2011

Course organization

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 90 minute sessions take place twice a week.

1.  Teaching Staff

The teaching staff involved in this course is:

Professor Office Hours Responsability
Abelardo Pardo Mondays, Tuesdays, Fridays 10:00 - 11:00. Subject coordinator, responsible for the master group 65/69/79/95, responsible for the master group 71/72, responsible for the lab group 65/69/79.
Iria Estévez Ayres Mondays 12:00 - 14:00, Tuesdays15:00 - 16:00 Responsible of the master group 66/67, responsible of the lab groups 66 and 91.
Pablo Basanta Val Thursdays 10:00 - 12:00 Responsible of the lab group 71.
Pedro J. Muñoz Merino Mondays 16:30-18:30, Wednesdays 12:30-14:30 Responsible of the master group 61/62.
Hugo A. Parada Gálvez Wednesdays 15:00-17:00 Responsible of the master group 66/67 and responsible of the lab group 67.
Damaris Fuentes Lorenzo Tuesdays and Wednesdays 11:00-13:00 Responsible of the lab groups 62 and 72.
Miguel Ángel Correyero García Fridays 18:00 - 20:00 Responsible of the lab group 61.
Antón Gómez Alvedro Fridays 16:00 - 18:00 Responsible of the lab group 90.
Derick Antonio Leony Arreaga Tuesdays and Thursdays 10:00-11:00, Responsible of the lab group 95.
Mar Pérez Sanagustín Tuesdays 15:00-17:00 Responsible of the lab group 92.

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. No questions will be accepted through personal email.

2.  Groups, schedule and rooms

The course is organized into nine groups that are consolidated into five for the master sessions. The times and rooms for each group are shown in the following table.

Group Master Session Lab session
61 Tuesdays 14:30 - 16:00 Fridays 16:15 - 17:45
62 Tuesdays 14:30 - 16:00 Fridays 14:30 - 16:00
65 Mondays 16:15 - 17:45 Fridays 14:30 - 16:00
66 Thursdays 12:30 - 14:00 Fridays 9:00 - 10:30
67 Thursdays 12:30 - 14:00 Fridays 10:45 - 12:15
69 Mondays 16:15 - 17:45 Fridays 14:30 - 16:00
71 Tuesdays 16:15 - 17:45 Thursdays 14:30 - 16:00
72 Tuesdays 16:15 - 17:45 Thursdays 14:30 - 16:00
79 Mondays 16:15 - 17:45 Fridays 14:30 - 16:00
90 Tuesdays 16:15 - 17:45 Wednesdays 18:00 - 19:30
91 Tuesdays 10:45 - 12:15 Fridays 10:45 - 12:15
92 Tuesdays 10:45 - 12:15 Wednesdays 09:00 - 10:30
95 Mondays 16:15 - 17:45 Wednesdays 14:30 - 16:00

Check frequently the detailed course schedule and the links to the material for each session.

3.  Course Scenario

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.

Within the company, the development department has a group specialized in applications for the Nokia N810. The developed applications are oriented to get the most of the main features of the device: wifi, camera, high multimedia capabilities and a sizeable screen for a mobile device.

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.

4.  Learning outcomes

The learning outcomes to obtain in this course are:

  1. 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.

  2. 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.

  3. 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.

  4. 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 4 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 applications for mobile devices.

  • 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 dirved 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.

5.  Course topics

The topics in which the course is divided are:

  1. The C Programming Language

    1. Basic data types, functions and flow constructions

    2. Structure of a C application. The pre-processor, file division, creating an executable.

    3. Pointer manipulation.

  2. Dynamic memory management in C.

    1. Dynamic data structures

    2. Memory leaks

    3. Tools for detecting memory leaks

  3. Architecture of the Nokia N810 MAEMO Platform

    1. Kernel, processes, file system

    2. Main libraries

    3. The cross-compilation environment

  4. Project Design

    1. Requirement analysis

    2. Decomposing functionality at a high level

    3. Top-down design

6.  The Sessions

As it has been described in Section 5, the course material is divided in to four blocks, and each block contains a set of sessions of two types: theory and laboratory. The material for all the sessions has the same structure. A set of previous activities that you need to solve to later solve the set of in-class activities.

The activities previous to a session are conceived to require 120 minutes (2 hours) of your time, and you will likely require the clarification of some details with the teaching staff. The in-class activities have been designed to last for 90 minutos.

The course is organized such that it is essential for you to solve the activities previous to each session to obtain a passing grade. In Section 7 the evaluation policy is described in detail, but the idea is to value the sustained effort in all the course weeks, and the method to check it is through tests derived from the material in the previous activities.

6.1.  Theory Sessions

The theory sessions are based in your participation and the material included in the previous activities. In these sessions we will review the concepts introduced in these previous activities, solve exercises either individually or in groups, and will introduce some new concepts. In some of these sessions we will carry out pre-announced evaluation tests.

We expect, then, that you attend these theory sessions with the material prepared and willing to work in the concepts and ideas covered in that material. A passive attitude in these sessions will transtate in negative consequences for the course.

6.2.  Lab Sessions

In the lab sessions in this course we will use a development environment adapted to the mobile device Nokia N810 (shown in the following figure).

This environment requires not only the device itself, but also a personal computer with a special tool that emulates the device behavior. The applications are first designed in this computer and when they are finished, they are transferred to the device for testing.

This means that your work needs to be done in a computer with a set of special tools previously installed. As in the case of the master sessions, lab sessions have previous activities in which you need to use this development environment outside these sessions. To facilitate this task, we have created a virtual machine containing all the tools required in this environment so that you can execute it in your own computer.

This machine is just another regular program to install in your equipment but it is capable to simulate the execution of a complete computer (thus the name virtual machine) as a regular application in your computer (which is called the real machine to differenciate them). If you own a personal computer, we recommend that you to install this virtual machine to be able to work in the course activities.

The development environment that is used in the course requires a large disk space and a powerful CPU for its execution. When combined with the use of a platform for version control that will store all your lab files, the use of a laptop compuber (if you have it available), is recommended, but not essential. Thus, if you have such machine you are welcome to bring it to the lab session and use it..

6.3.  Team Work

As mentioned in Section 4, one of the learning outcomes for the course is to apply team working techniques. The course starts with lab sessions to be worked with a partner that you choose. But in the second half of the course the labs are done in four person teams that will be created by the teaching staff.

Team work has been identified as an essential skill for the current job market. Working in a team does not mean that you work with some friends. It has been shown that under certain circumstances, a team achieves much more ambitious objectives that those obtained individually. But achieving the optimal conditions for a team to work has also been proven difficult.

In this course, we have schedule special sessions to analyze what does it mean for a team to work properly, how to detect anomalies and the techniques to solve them.

6.4.  Your Week

Looking at the course mehtodology and the schedule workload, a possible structure of your workload derived for the course during a week is shown in the following figure.

The activities previous to a session are so important to cover the material that we recommend you to start working on them ahead enough to include, if you need it, a session to clarify problems with the teacher (either during office hours or through the course forum).

The duration of the activities is just an orientation, but you should use it as a guide to assess your performance. If you solve an activity in a time much longer than the one suggestino, analyze the reasons for this. If it is because your time has not been productive (too many interruptions, lack of concentration, etc.) make sure you change the environment. If it is becuase you have problems understanding the material, got immediately to talk with the professor to try to solve these problems. The sooner you take actions to solve this issue, the greater your possibilities to finish the course successfully.

Although the activities more related to program development are schedule before the lab sessions, it is highly recommended to use the development environment (that is, the virtual machine) also for the exercises covered in the theory sessions. Very often, the exercises will required designing a data structure or analizing the behavior of a program under certain circumstances and the compiler or debugger can be used to test your answers. It is then highly recommended to have this environment available any time you work in the course material.

During the second half of the course while working in tems, activities will be a bit more complex and will require regular team meetings. It is very important for you to know how to organize your work to combine both activities.

7.  Evaluation

We grade the course following a continous evaluation scheme. During the course, you will obtain points in several tests both in the theory sessions and the lab sessions. The course work is done both in group and individually. As a consequence, you will have an theory score (TE) and a Lab score (PR). The distribution of these points over the course topics is shown in the next table.

Topic Theory (TE) Practice (PR) Total
The C Programming Language (DSP) 15 (10 + 5) 2 17
Dynamic memory management in C. (MMC) 15 (10 + 5) 10 25
Architecture of the Nokia N810 MAEMO Platform (MSA) 5 (5 + 0) 3 8
Project Design(PRJ) 10 + 10 + 10 10 + 15 + 5 60
Total 65 45 110

The work in groups is done in two stages. 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 stages combined with the points distributed among course topics.

The evaluation methods we 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 through the version control system. 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 reason is because, if due to unforeseeable reasons you cannot attend a test, its effect is such that you still can obtain the maximum score in the course. With this policy you neither have to excuse nor justify your absence in a test. If your performance in the course is at a certain level, there will be no impact.

The final score for the course is obtained with the formulas shown in the following table:

Condition Final Score
If TE < half of the maximum theory score (95*TE/65) + (15*PR/45)
If TE >= half of the maximum theory score MAX((95*TE/65) + (15*PR/45), (45*TE/65) + (65*PR/45))

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. You may take the decission of which of the two options to follow before the beginning of the project module. We assume that if you make a commitment with the group and sign such document, you are choosing to follow the continuous evaluation thus forfeiting the possibility of taking the final exam.

8.  Summary

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 mobile 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, use industry-class development tools, work colaboratively and increase the self-learning capacity.

  • We stronly 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 has theory and lab scores. For the final score, the theory score weights 95/115 whereas the lab score weights 15/110. However, if the individual score goes above a threshold, then a second scheme is considered where individual score weights 45/115 and group work weights 65/115. In this case, the final score is the highest of the two schemes.

  • 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.