Advanced Programming

UAB Barcelona Summer School

07 Advanced Programming - Vicenç Soler Ruíz

Number of credits: 6 European Credit Transfer and Accumulation System (ECTS)
Course Fee: 850 €
Course Fee for UAB students and Alumni UAB Premium+ : 200 €
Teaching Language: English
Place: Online
Teaching Period: 12 July to 30 July

Schedule:
  • 9-10h: Lecture class with professor 
  • 10-11h: Interactive seminar
  • 11-12h: Organised tutoring sessions

Registration of international and national students (non-UAB students) before May 16 will get 20% discount.

Enrol now

Enrolment guidelines

Contact: summer@uab.cat

 

PROFESSOR BIO INFORMATION

Vicenç Soler obtained his PhD in Computer Science at UAB. He is the professor of the Advanced Programming subject since 2002 and professor at UAB since 2000. He was the Director of the Java Specialist Postgraduate course at UAB and, since September 2010, he is the Coordinator of UAB Specific Courses at the Sabadell Campus of the School of Engineering (UAB). He has also participated in several European research projects.

Department of Microelectronics and Electronic Systems

E-mail: vicenc.soler@uab.cat

 

ACADEMIC GUIDE

Contents overview

The main objective of the subject is the improvement of the students' programming skills and knowledge, and for that reason this course is practice oriented. The assessment is based on developing two games: one in C and the other in Java or Python (to be chosen by student). The development of games, as a basis for the practices of the subject, provides the obligation to use many different aspects of the programming languages and makes the subject more attractive.

It is oriented to students of any degree (maths, physics, engineering, chemistry, etc.; not necessarily computer science) who have already started programming and want to improve their knowledge and skills.

The subject has two different parts. A first objective is to achieve a good level of structured programming (with C), so students will be able to structure an application and to program complex algorithms. Concepts as pointers, dynamic memory allocation, referenced parameters, recursivity, scalability and algorithms structure will be learnt by developing lists, stacks and trees, applied to a game.

A second objective is to achieve a good level in Object-Oriented Programming (with Java and Python) and also how to structure and develop an application using OOP. The concepts taught in this part (class definition, inheritance, overloading, overriding, etc.) can be used as the basis for learning any other object-oriented language (e.g. C++). This second part also includes App development on smartphones (e.g. Android).

 

Week programme

Advanced Programming
 Week   Contents Teaching/learning activities
1

C programming

1. Reminder of structured programming C

1.2. Basic reminder

1.1.1. Structures and data types

1.1.2. Sequence, control and iteration structures

1.1.3. Procedures and functions

1.2. Dynamic structures

1.2.1 Organization of pointers and memory addresses

1.2.2. Basic structures: stacks, lists and queues.

1.2.3. Trees

1.2.4. Dynamic matrices

2. Recursivity.

2.1. Recursivity fundamentals

2.2. Trees:

2.2.1. Priority amplitude and priority depth.

2.2.2. Backtracking.

The objective is to achieve a good level of structured programming (with C), so students will be able to structure an application and to program complex algorithms. Concepts as pointers, dynamic memory allocation, referenced parameters, recursivity and algorithms structure will be learnt by developing lists, stacks and trees, applied to a game.

 

During the course, some not graded activities will be proposed to students.

The main activity (graded) is the development of a game.

Parts of the sessions will be dedicated to consultation of students respecting their development.
2 Object Oriented Programming with Java and Python I

3. Object-oriented programming

3.1. General concepts and features

3.2. Classes and objects

4. Java I

4.1. Language characteristics

4.2. Starting with the language

4.3. Inheritance


5. Python I

5.1. Language differences with Java

5.2. Class declaration and development in Python

5.3. Structure management in Python

The objective is to achieve a good level in Object-Oriented Programming (with Java and Python) and also how to structure and develop an application using OOP. The concepts taught in this part (class definition, inheritance, overloading, overriding, etc.) can be used as the basis for learning any other object-oriented language (e.g. C++).

 

During the course, some not graded activities will be proposed to students in both Java and Python.

3 Object Oriented Programming with Java and Python II

6. Java II and Python II

6.1. Interfaces and events

6.2. Graphics

6.3. Network and DB Connection


7. Introduction to Android

During the course, some not graded activities will be proposed to students.

The main activity (graded) is the development of a game.

Parts of the sessions will be dedicated to consultation of students respecting their development.


Evaluation

The assessment is based on developing two games: one in C and the other in Java or Python (to be chosen by student), 50% each.
 

Links and references

  • K. N. King , “C Programming: A Modern Approach”, Ed. WW Norton & Co, 2008

  • "The C++ Programming Language", B.Stroustrup, 3ªed.,Addison-Wesley, 1997.

  • P.Naughton, H.Schildt ,"Java2: The Complete Reference",  Osborne/McGraw-Hill, 2000

  • "Core Java" Volumes I y II, C.S.Horstmann, G.Cornell, Sun Microsystems Press.

  • Mark Lutz, "Learning Python", Ed. O'Reilly, 2013