|
Docente
|
DE ANGELIS GUGLIELMO
(programma)
Computational Science (CN). CN/Interactive Visualization - Use of APIs for developing user interfaces using standard input components such as menus, sliders, and buttons. Graphics and Visualization (GV). GV/Fundamental Concepts - Media applications including user interfaces - Use of standard APIs for the construction of UIs and display of standard media formats (see CN) Platform-Based Development (PBD). PBD/Web Platforms - Web programming languages (HTML5, Java Script, CSS) - Web platform constraints. Programming Languages (PL). PL/Object-Oriented Programming - Object-oriented design o Decomposition into objects carrying state and having behavior o Class-hierarchy design for modeling - Definition of classes: fields, methods, and constructors - Subclasses, inheritance, and method overriding - Dynamic dispatch: definition of method-call - Subtyping o Subtype polymorphism; implicit upcasts in typed languages o Notion of behavioral replacement: subtypes acting lik! e supertypes o Relationship between subtyping and inheritance - Object-oriented idioms for encapsulation o Privacy and visibility of class members o Interfaces revealing only method signatures o Abstract base classes - Using collection classes, iterators, and other common library components - PL/Event-Driven and Reactive Programming - Events and event handlers - Canonical uses such as GUIs, servers - Using a reactive framework o Defining event handlers/listeners - Externally-generated events and program-generated events - Separation of model, view, and controller. PL/Basic Type Systems - A type as a set of values together with a set of operations o From Primitive types (e.g., numbers, Booleans) to Compound types built from other types (e.g., records, unions, arrays, lists, functions, references) - Association of types to variables, arguments, results, and fields - Type safety and errors caused by using values inconsistently given their intended types - Goals and limitati! ons of static typing - Generic types (parametric polymorphism) - Complementary benefits of static and dynamic typing PL/Language Translation and Execution - Interpretation vs. compilation to native code vs. compilation to portable intermediate representation - Language translation pipeline: parsing, optional type-checking, translation, linking, execution o Execution as native code or within a virtual machine o Alternatives like dynamic loading and dynamic (or -just-in-time -) code generation - Run-time representation of core language constructs such as objects (method tables) - Run-time layout of memory: call-stack, heap, static data o Implementing loops, recursion, and tail calls - Memory management o Manual memory management: allocating, de-allocating, and reusing heap memory o Automated memory management: garbage collection as an automated technique using the notion of reachability.PL/Runtime Systems - Dynamic memory management approaches and techniques - Data layout for objects and activation records - Other common features of virtual mach! ines, such as class loading, threads, and security. PL/Advanced Programming Constructs - Control Abstractions: Exception Handling - Object-oriented abstractions: Multiple inheritance - Meta-classing. PL/Concurrency and Parallelism - Constructs for thread-shared variables and shared-memory synchronization - Models for passing messages between sequential processes - Thread states and state diagrams - Structures (ready list, i/o blocked list, condition blocked list, and so forth) - The role of locks, monitors, read-writers, and so forth. PL/Type Systems - Type checking - Static overloading. Software Development Fundamentals (SDF). SDF/Development Methods - Program comprehension - Program correctness o Types of errors (syntax, logic, run-time) o The concept of a specification o Defensive programming (exception handling) o Code reviews o Testing fundamentals - Structural and behavioral models of software designs - Design patterns - Software architecture concepts and standard ar! chitectures (e.g. client-server, n-layer, pipes-and-filters). SE/Software Construction - Coding practices: techniques, idioms/patterns, mechanisms for building quality programs o Using exception handling mechanisms. SE/Software Verification and Validation - Verification and validation concepts - Inspections, reviews, audits - Testing o Unit, integration, validation, and system testing o Black-box and white-box testing techniques o Regression testing and test automation - Defect tracking
 - Jim Arlow, Ile Neustadt: UML2 e Unified Process, Analisi e progettazione, McGraw-Hill, 2007. - Cay S. Horstmann and Gary Cornell Core Java Volume I--Fundamentals | Core Java, Volume II--Advanced Features, Prentice-Hall, 2012. - Trasparenze delle lezioni distribuite via ispw@lists.uniroma2.it e una piattaforma online
|