Teaching

 

Communication Protocols (PC)

 

Bachelor Studies (2nd year), Computer Science Department, UPB

Website: https://cs.pub.ro/index.php/education/courses/59-under/an2under/115-communication-protocols


The Course targets learning the models, methods, and algorithms related to the design and implementation of computer network protocols; acquire knowledge in the main Internet protocols and technologies (TCP/IP suite). More specific it targets: Learning the concepts, methods, models, and algorithms for the design and implementation of computer network protocols. Understanding the principles of protocol layering and protocol hierarchy, the role of standardization and the importance of open technologies for Internet development. Learning the main Internet protocols and technologies (in the TCP/IP suite): low level (communication oriented) and high level (application oriented). Protocol analysis for high performance networks, mobile networks, and ad-hoc networks. Learning new methods and mechanisms used to obtain high performance in computer networks. Learning the principles and design solutions for open, scalable, and high performance networks. Study of high level protocols (for remote access, e-mail, Web, file transfer) and of their use for the development of Internet services.

 

Parallel and Distributed Algorithms (APD)

 

Bachelor Studies (3rd year), 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.

 

Instruments for Software Development (IDP)

 

Bachelor Studies (4th year), 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.

 

Web programming (PWeb)

 

Bachelor Studies (4th year), 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.

 

Cloud Computing (CC)

 

Master Studies (1st year), 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.

 

Dependable Systems (SSI)

 

Master Studies (2nd year), 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.