Checking date: 30/03/2023

Course: 2023/2024

Systems Programming
Dual Bachelor Data Science and Engineering - Telecommunication Technologies Engineering (Plan: 456 - Estudio: 371)

Coordinating teacher: ALARIO HOYOS, CARLOS

Department assigned to the subject: Telematic Engineering Department

Type: Compulsory
ECTS Credits: 6.0 ECTS


Requirements (Subjects that are assumed to be known)
Programming (1st course, 1st semester)
The goal of this course is for the student to deepen their knowledge in programming techniques, including advanced object orientation, as well as some of the more fundamental data structures and algorithms. The programming language that will be used in this course is Java, although the acquired knowledge can be applied to other programming languages as well. This course is taught in a coordinated manner between different degrees. In the case of degrees that enable the exercise of regulated professions, the order CIN/352/2009, of February 9, 2009, BOE of February 20, 2009 applies ( In any case, this course allows the development of the basic training competence mentioned in that order "Basic knowledge on the use and programming of computers, operating systems, databases and computer programs with application in engineering". In addition, this subject allows the development of the following competences. CB1 - That students have demonstrated knowledge and understanding 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 - That students know how to apply their knowledge to their work in a professional manner and have the competencies that are usually demonstrated through the development and defense 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 (called CG2 in the Degree in Data Science and Engineering) CG11 - Basic concepts on computer use and programming, operating systems, databases and IT programs with engineering applications (not included in the Degree in Data Science and Engineering, although it will also be addressed in the course). ECRT7 - Knowledge and use of the fundamentals of programming in telecommunication networks, systems and services (not included in the Degree in Data Science and Engineering, although it will also be addressed in the course). CE7 - Ability to assimilate basic concepts of programming and ability to perform programs oriented to data analysis (specific competency in theDegree in Data Science and Engineering, although it will also be addressed in the other degrees). To address these general competencies, the following specific competencies have been defined. 1.Design and development of applications using the Java programming language a.Knowledge. Interpret, explain and exemplify: i.the elements of object orientation ii.the concept of recursion iii.the fundamentals of data structures, such as lists, stacks, queues, deques and trees iv.different algorithms processing data structures b.Specific abilities: i.Program object oriented applications ii.Represent, design and implement recursive algorithms iii.Implement algorithms and use linear data structures (linked lists, stacks, queues, deques, trees,etc) iv.Decide which data structures fit better to given problems, and reuse or design appropriate algorithms for solving specific problems c.Attitudes. A critical attitude towards: i.the suitability of different data structures and algorithms for specific problems ii.the use of the bibliography and other information resources for increasing his/her knowledge in other topics related to the subject 2.Use of an application environment that provides facilities for software development. a.Be able to create, compile and run a Java program b.Be able to interpret and eliminate error messages and warnings shown by the compiler
Skills and learning outcomes
Description of contents: programme
The syllabus of this module is divided into four modules: 1. Object Based programming 1.1. Definitions: Classes and objects 1.2. Composition of classes 1.3. Constructors 1.4. Shadowing 1.5. Modifiers 2. Object Oriented Programming 2.1. Inheritance 2.2. Overwriting and overloading 2.3. Casting 2.4. Abstract classes and interfaces 2.5. Multiple inheritance and polymorphism 3. Recursion 3.1. Definitions 3.2. Types (linear, non linear, mutua) 3.3. Recursion vs. iteration 3.4. Implementation and execution examples 4. Data structures, algorithms and implementation samples 4.1 Linked Lists and Doubly Linked Lists. 4.2 Stacks 4.3 Queues (simple, double and priority queues) 4.4 Trees (n-ary trees, binary trees, binary search trees)
Learning activities and methodology
The teaching methodology of this course is based in the active integration of the student in the teaching activity and in the application of the principles of continuous evaluation. The course is divided into units, where each unit consists of lectures in large groups and lab sessions in small groups. All the necessary information and material will be available from the web site of the course. The student participation in the class activities (questions, problem-solving in groups) will be positively taken into account. The lab scripts with the exercises and programs to be carried in the lab are also available in advance. Additionally to the lectures and lab sessions, the web page proposes some homework activities. 1. Lecture sessions (theory, exercises and questions). In these classes the students will be introduced to the educational contents they should learn. In order to facilitate the understanding, the students will be provided with the class notes and basic reference books. 2. Lab sessions (Problem solving). In these classes in computer labs, the students will analyze and develop programs applying the different concepts taught in the lectures. 3. Personal work: Self-study to understand the theoretical concepts and how to apply them, homework, to solve exercises. 4. Exams: Exercises to be solved by the students to demonstrate the knowledge and the required abilities acquired during the course. a) Mid-term evaluations b) Final exam 5. Office hours according to current regulations
Assessment System
  • % end-of-term-examination 50
  • % of continuous assessment (assigments, laboratory, practicals...) 50
Calendar of Continuous assessment
Basic Bibliography
  • Mark A. Weiss. Data Structures and Problem Solving Using Java. Addison-Wesley.
  • Michael T. Goodrich and Roberto Tamassia. Data Structures and Algorithms in Java. John Wiley & Sons, Inc..
Recursos electrónicosElectronic Resources *
Additional Bibliography
  • Cutajar, J. Beginning Java Data Structures and Algorithms. Packt Publishing.
  • Parsons, D.. Foundational Java: Key Elements and Practical Programming. Springer Science & Business Media.
  • Weisfeld, M. The object-oriented thought process. Pearson Education.
Recursos electrónicosElectronic Resources *
Detailed subject contents or complementary information about assessment system of B.T.
(*) 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.