Advanced Programming

Number of credits: 6 European Credit Transfer and Accumulation System (ECTS) Price: 840 €
Price for UAB students*: 200 €
*Max. 5 places
Teaching Language: English Place: UAB Campus Belltaterra (Cerdanyola del Vallès), Barcelona

Teaching Period: 13 to 31 July

Contact: summer@uab.cat

Professor: Vicenç Soler
Enrol now!

Enrolment guidelines


PROFESSOR BIO INFORMATION

Vicenç Soler obtained his PhD in Computer Science at UAB. He is the teacher of the Advanced Programming subject since 2002 and teacher 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.


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, recursively, 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
 

Week Contents Teaching / learning activities
1
C programming

1. Reminder of structured programming C
  • Basic reminder
  • Structures and data types
  • Sequence, control and iteration structures
  • Procedures and functions
  • Dynamic structures
  • Organization of pointers and memory addresses
  • Basic structures: stacks, lists and queues.
  • Trees
  •  Dynamic matrices

2. Recursively
 
  • Recursively fundamentals
  • Trees
  • Priority amplitude and priority depth
  • 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, recursively and algorithms structure will be learnt by developing lists, stacks and trees, applied to a game.

uring 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
  • General concepts and features
  • Classes and objects

4. Java I
 
  • Language characteristics
  • Starting with the language
  • Inheritance

5. Python I
 
  • Language differences with Java
  • Class declaration and development in Python
  • 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
 
  • Interfaces and events
  • Graphics
  • Network and DB Connection

7. Introduction to Android
 

During the course, some ungraded activities will be proposed to students. The main activity (graded) is the development of a game.

The student may choose whether to develop it in Python or Java. 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