UNIVERSITY OF TRENTO

Department of Information Engineering and Computer Science

Bachelor Degree in Computer Science

Final Thesis

Re-Design e Valutazione di un'Interfaccia di End-User Development per Serious Games

Mobile and tablet programming laboratory

Introduction to mobile programming, introduction to Android, Android architecture, Android UI and advanced Java, Android graphics and multimedia, network awareness, security, Android widget development.

Introduction to web programming

Software architectures for the web: client-server architectures, N-Tier architectures, web server architectures, component-based architectures, network communication channels (socket), technologies: Java Server Pages, Java Servlets, JavaBeans, Java Server Faces, standard interface to databases (JDBC).

Human-computer interaction

Interaction styles and paradigms, introduction to usability engineering, elements of cognitive psychology and the psychology of the user and their implications for design, introduction to user- and task-centered design, concept of utility, usability, and user-experience, user evaluations: formative, summative, and usability evaluation approaches, elements of user interface, practice of interface design.

Information systems

Data on the web: object-oriented databases, semi-structured data and XML, schemas for XML: DTDs and XML schema, navigation with XPath, the XQuery query language, typing of XML data, design issues and the relation to XSLT, XML database issues, data integration and P2P databases OLAP and data mining techniques for searching for data on the web.

Programming languages: semantics

Introduction the usage of formal techniques to define, design and implement programming languages.

Advanced algorithms

Advanced techniques in the design and analysis of algorithms, discrete and continuous optimization algorithms, also based on "Learning and Intelligent Optimization" (LION), competence in the area of "data science": starting from the data to build models, using the models to identify improving solutions.

Physics

Fundamental concepts of physics and to some applicative aspects which can be relevant for computer science, scientific method: observation, experiment and model, dynamics, mechanics, thermodynamics, electromagnetic waves.

Operating systems 1

Introduction to operating systems, elements of architectures, process management, threads, scheduling of the CPU, synchronization among processes and deadlocks, memory management, virtual memory, file-system, mass memory, input/output, multiprocessor systems, security, real-time OS, multimedia OS.

Software engineering

Software development in small/medium projects, software development from craftsmanship to industrial process, fundamentals of project management, UML, Use Case Diagrams, Class Diagrams, StateCharts, Activity Diagrams and Sequence Diagrams, requirements analysis and requirements management, software analysis and design, developing and testing of code, maintenance and versioning of code.

Algorithms and data structures

Introduction to algorithms, algorithm analysis, data types and data structures, basic data structures, trees, balanced search trees, hash tables, set and dictionaries, graphs, priority queues and disjoint sets, data structures and algorithm design, divide et impera, dynamic programming, greedy, local search, backtrack, probabilistic algorithms.

Databases

The entity-relationship model, the SQL language and its relation with the algebra, simple queries, complex queries with nesting, views, recursion, constraints (keys, foreign keys and others), query analysis and conversion to algebra, query optimization.

Probability and statistics

Probability spaces, events, independence, combinatorics, random variables: distributions, independence, random vectors, entropy, the Bernoulli's scheme, law of large numbers, Markov processes: classification of states, ergodic property, Poisson process: counting processes, limit theorems, estimates of average and variance.

Computer networks

Founding bases of communication networks, formalizing the notion of protocols and network architecture, the archetypal computer network: internet, access and transmission technologies that support internet itself and that are often confused with it.

Functional programming

Introduction to the principles of functional programming, basic types, functions, recursion, evaluation strategies, polymorphism, lists and sorting algorithms, pattern matching, exceptions, trees, higher-order functions, program specification and verification, type inference.

Programming 2

Object-oriented programming, introduction to Java, exceptions and try/catch, modifiers and constructors, interfaces, examples of interfaces and inheritance in Java APIs, static variables and methods, introduction to graphics in Java, main graphic classes, models for event management.

Programming 1

Basics programming in C++, I/O, variables, constants, types, expressions, basic and structured instructions, functions and parameter passing, arrays, pointers and references, passing pointers to functions, strings, structs, dynamic memory allocation (new & delete), dynamic allocation of arrays, dynamic allocation of structs, usage of argc & argv, multiple files program, main data structures (lists, stack, queues), binary trees.

Discrete mathematics 2

Set theory: sets and cardinality of sets (combinatorial counting), arithmetic and modular arithmetic (induction, divisibility, Euclid's algorithm, congruences, expressing numbers in different bases), graph theory.

Discrete mathematics 1

Introduction to linear algebra, linear systems, Gauss' method, vector spaces, vector subspaces and Grassman' formula, theory of linear applications, linear applications and matrices, rank of a matrix, computation of the inverse by the determinant, eigenvalues and eigenvectors of a linear application, euclidean scalar product, norm and distance in Rn.

Computer architectures

Basic notions on the organization and the architectures of both general and special purpose computing machines, addressing modes, I/O operations, queues and execution stacks, CPU fundamental concepts and I/O organization, Internal and external buses, static and dynamic RAM, cache memories, ROM and EPROM, virtual memory, pipelining, CISC and RISC processors.

Calculus

Acquisition of the basic concepts of the math, analysis arguing ability and good competence in problems solving, functions, limits, continuous functions and derivatives, integrals, numerical sequences and series and Taylor series, differential equations (first and second order), several variables: functions, partial derivatives and double integrals.