Teaching

 

Parallel and Distributed Algorithms (APD)

 

Bachelor Studies, Computer Science Department, UPB

Website: https://cs.pub.ro/index.php/education/courses/60-under/an3underg/122-parallel-and-distributed-algorithms


The course objectives are: to learn parallel and distributed algorithms development techniques for shared memory and message passing models; to study the main classes of parallel algorithms; to study the complexity and correctness models for parallel algorithms. More specific: Learning the conceptual models for the specification and verification of parallel and distributed algorithms (P&D); Understanding the complexity models of P&D algorithms; Learning the development methods of efficient P&D algorithms using data partitioning and functional partitioning, parallelism exploitation for different process topologies, hiding communication latencies, load balancing; Development techniques for parallel algorithms; examples from the main classes: prefix algorithms, search, sort, selection, matrix processing, graph algorithms, lists, trees; Study of the main development techniques of classes of distributed algorithms: wave algorithms, mutual exclusion, topology establishment, termination, fault tolerance, leader election, genetic algorithms.

Syllabus:

  1. Categories of applications. Conceptual models. Programming methods. Parallel and distributed systems.
  2. A language for algorithms presentation. Concurrency and synchronization. Atomicity. Barriers. Data parallelism. Prefix algorithms. Processing lists and matrices. Message passing. Complexity of Parallel and Distributed algorithms
  3. Performance metrics. Complexity models: Work-depth, Foster, LogP.
  4. Algorithms development using shared variables. Languages for concurrent programming. Concurrent access to priority queues.
  5. Algorithms development for PRAM models. Parallel search. Parallel selection.
  6. Algorithm development using message passing. Languages and libraries for distributed programming.
  7. Logical clocks and ordering of events. Vector timestamps.
  8. Topology establishment. Heartbeat algorithm. Probe-echo messages.
  9. Termination of distributed programs. Termination detection in ring and graph topologies. Termination detection using message echoes: Dijkstra-Scholten. Detecting termination using mark messages. Huang algorithm.
  10. Algorithms for fault tolerant systems. Byzantine generals’ problem. Solution with oral messages. Solution with signed messages.
  11. Wave algorithms and leader election. Ring, tree, echo, and phase algorithms. Finn’s algorithm. Leader election with wave algorithms. LeLann, Lelann-Chang-Robert, and Hirschberg-Sinclair algorithms.
  12. Parallel genetic algorithms. Model, rationale, implementation. Transport problem. Parallel genetic algorithms.
  13. Distributed algorithms for mutual exclusion. Classification, complexity metrics. Lamport, Ricart-Agarwala, Roucairol-Carvalho, Maekawa, Suzuki Kasami, and Raymond algorithms.

 

Instruments for Software Development (IDP)

 

Bachelor Studies, Computer Science Department, UPB

Website: https://cs.pub.ro/index.php/education/courses/64-under/an4underg/c3/144-instruments-for-software-development


The course objectives are: Learning the advanced software development instruments, from high-level libraries to advanced technologies, programming paradigms, visual design and development software environments. Understand how to design and implement software systems through the integration of software components in visual development environments. Learning the modern component based software design approaches, the existing technologies, as well as the particularities of modern development environments.

Syllabus:

  1. User Interface design and implementation. Conceptual models.
  2. Component based software design. Programming architectures. Software development methods.
  3. Software development instruments and environments. Techniques and technologies for software development.
  4. Modern object-oriented methodologies and technologies based on components.
  5. Database front end design.
  6. Internet applications.
  7. Distributed applications and advanced technologies for software development.

 

Web programming (PWeb)

 

Bachelor Studies, Computer Science Department, UPB

Website: https://cs.pub.ro/index.php/education/courses/66-under/an4underg/c5/154-web-programming


The course objective is to make a comprehensive presentation of web programming and to provide students with the ability to use the tools of the domain. During course hours (and also labs hours) the students will be provided with notions, methodologies and techniques for: Understanding the architecture of a web-based software system; Installing and configuring a web site, including methods for providing secured access (HTTPS, security certificates); Writing CGI scripts in compiled languages and in client-side and server-side interpreted languages; Writing dynamic web pages based on the content of a relational database; Optimizing websites for better indexing by the search engines; Using multimedia adds in web pages and style concepts.

Syllabus:

  1. HTML language: basic elements, tables, frames, forms, CSSs.
  2. CGI scripts. Scripts written in compiled languages.
  3. Client side web programming: jscript.
  4. Using SQL language for web programming.
  5. Server side script languages: PHP.
  6. Multimedia in web programming.
  7. Optimizing web pages for better indexing by search engines.
  8. Style in web programming.

 

Cloud Computing (CC)

 

Master Studies, Computer Science Department, UPB

Website: https://cs.pub.ro/index.php/education/courses/69-mas/ass/164-cloud-computing


The course covers concepts specifics to the Cloud Computing domain, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). It presents aspects ranging from Cloud paradigms and models to technologies used in middleware.
The economical models for Cloud Computing, Service Cloud models, the mechanisms and instruments specific to developing and executing Services and Applications in Cloud environments are also presented. Finally, the course will develop the necessary skills to understand concepts related to Business Grid, Cloud Computing, platforms and methologies to develop services and solutions in Clouds. The practical applications help students develop their skills to: 1) undersand how to correctly administer Cloud infrastructures and systems;
2) understand how to develop applications and services using specific instruments related to Hadoop and MapReduce (in the first part), and higher-level services provided within Google App Engine (in the second part of this class).
Students are presented with concrete case studies, and they will have the chance to experience the development of practical applications for each of these objectives.

Syllabus:

  1. From Business Grid to Cloud Computing
    • Trends of computing, introduction to distributed computing
    • Cloud Service models, Deployment models, Cloud middlewares
    • Case studies: Eucalyptus, OpenNebula
  2. Infrastructure as a Service (IaaS)
    • Introduction to IaaS
    • Resource Virtualization
    • Case studies
  3. Platform as a Service (PaaS)
    • Introduction to PaaS
    • Cloud platforms and their management
    • Case studies
  4. Software as a Service (SaaS)
    • CIntroduction to SaaS anb Business Process As A Service
    • Case studies

 

Dependable Systems (SSI)

 

Master Studies, Computer Science Department, UPB

Website: https://curs.cs.pub.ro


Fast growth and proliferation of embedded systems forces the increased demand for properties such as dependability, timeliness and security. In this course we focus on dependability but references to other two properties are also included. After introducing the various dependability perspectives on system design as well as the methodology we introduce basic concepts, measures and models used in dependable computing and communication. We then describe testing methods, fault diagnosis, fault recovery and fault tolerance techniques that are essential in the dependable systems design. We conclude the course with case studies, which demonstrate what techniques have been, used for the dependability enhancement in
the real life systems. In summary, lectures cover techniques for high availability, fault tolerance, monitoring, diagnosis; we look at how to achieve high availability through fast recovery and graceful service degradation, as well as techniques that leverage redundancy and replication.

Syllabus:

  1. Dependable systems: properties and requirements
    • Reliability, Availability, Safety, Security, Mentenability
    • MTBF, MTTF, MTTR
  2. Modeling dependability. Analytical techniques for assessing dependability
    • Error analysis
    • Design-for-failure methods (FMEA, FTA, THEA)
    • Fault trees
    • Markov modeling
  3. Management of risk factors
    • Hazard identification
    • HAZOP, SWIFT, ALARP
  4. Dependability methods: Redundancy, Voting systems, Recovery blocks, N-Version programming, redundant verification, fault isolation
  5. Detection and predicting failures
    • Watchdogs
    • Exception handling
    • Error prediction
  6. Error Recovery
  7. Security
    • Trust
    • Intrusion detection
    • Security requirements and security mechanisms
    • Controlled execution