Advanced Programming - Online

UAB Barcelona Summer School

Advanced Programming: Learn Programming by Developing Games - Lecturer Vicenç Soler

Number of credits: 6 European Credit Transfer and Accumulation System (ECTS)
Price: 840 €
Price for UAB students: 200 €
Teaching Language: English
Place: UAB Campus Belltaterra (Cerdanyola del Vallès), Barcelona
Teaching Period:  22 June to 10 July
Second period:

  • 10-11 Organised tutoring sessions
  • 11-12 Lecture class with professor
  • 12-13 Interactive seminar

Professor: Vicenç Soler

Enrol now

Enrolment guidelines

Contact: summer@uab.cat

 

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.

  • Department: Computer Science
  • Phone number: (+34) 935 813 554
  • 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, 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.

Along 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 this week, 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
 

This week, 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