Teaching activities: courses

All courses are given at the computing science department of the University Institute of Technology (IUT Nice côte d'azur).

M4105C - Additional algorithmics

Objectives. Basic introduction to the complexity analysis of algorithms. Application to general algorithm design techniques: greedy algorithms, divide and conquer, dynamic programming.

Description. The course concentrates on the application of major design techniques for solving basic problems: searching, sorting, interval scheduling, the knapsack problem, … For each proposed solution, students have to study its performance characteristics and its effectiveness for practical cases of the problem.

Course summary.
  • Algorithm definition. Correctness and termination. Searching and sorting.
  • Abstract model (RAM) - Running time and order of growth.
  • Design of algorithms 1: divide and conquers algorithms.
  • Design of algorithms 2: greedy algorithms.
  • Design of algorithms 3: dynamic programming.
  • Design of algorithms 4: local search heuristics.
Schedule.
  • Lectures (CM): 6 weeks, 1 session / week, 1 hour / session
  • Tutorial classes (TD) and Labs (TP): 7 weeks, 1 session / week, 3 hours / session

Prerequisites. M3103 Advanced algorithms.

References.
  • Kleinberg, J. and Tardos, E. (2005). Algorithm Design. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA. (see also the slides of K. Wayne )
  • Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2009). Introduction to Algorithms, Third Edition. The MIT Press, 3rd edition.
  • Cormen, T. H. (2013). Algorithms Unlocked. The MIT Press.
  • Knuth, D. E. (1997). The Art of Computer Programming, Volume 1 (3rd Ed.): Fundamental Algorithms. Addison Wesley Longman Publishing Co., Inc., Redwood City, CA, USA.

M3103 - Advanced algorithms

Course content from Denis Pallez, responsibility shared in 2017 with some adaptation

Objectives.To know how to use major advanced data structures, how to implement some, and to know how to implement the algorithms that manipulate them.

Description. The course concentrates on the description and the implementation of recursive data structures. The course introduces recursive and iterative algorithms using these data structures. Finally, more advanced data structures such as dictionaries and sets are studied.

Course summary.
  • Recursion.
  • Abstract data types and iterators.
  • Lists ADT.
  • Trees and graphs ADT.
  • Search trees.
Schedule.
  • Lectures (CM): 6 weeks, 1 session / week, 1 hour / session
  • Tutorial classes (TD) and Labs (TP): 6 weeks, 1 session / week, 3 hours / session

Prerequisites. M1103 Data structures and fundamental algorithms. M2201 Graphs and languages

References.
  • Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2009). Introduction to Algorithms, Third Edition. The MIT Press, 3rd edition.
  • Mehta, D. P. and Sahni, S. (2004). Handbook Of Data Structures And Applications (Chapman & Hall/Crc Computer and Information Science Series.). Chapman & Hall/CRC.
  • Goodrich, M. T., Tamassia, R., and Goldwasser, M. H. (2014). Data Structures and Algorithms in Java. Wiley Publishing, 6th edition.

TLFIDM13, TLFADM15 - Introduction to algorithms and complexity

This course is a shorter version of M4105 dedicated to the students of LP SIL (vocational bachelor's degree in computer systems and software development).


M4102C - Distributed programming

Objectives. To know how to program a distributed application.

Description. The course concentrates on the design and the implementation of Java distributed programs.

Course summary.
  • Concurrency and Java threads.
  • Thread pools.
  • Socket programming.
  • Remote Method Invocation.
Schedule.
  • Lectures (CM): 6 weeks, 1 session / week, 1 hour / session
  • Tutorial classes (TD) and Labs (TP): 7 weeks, 1 session / week, 3 hours / session

Prerequisites. M3101 Principles of operating systems, M3102 Network services and M3105 Advanced object design and programming.

References.
  • Goetz, B., Peierls, T., Bloch, J., Bowbeer, J., Lea, D., and Holmes, D. (2006). Java Concurrency in Practice. Addison-Wesley Professional.

Operating systems

Courses related to operating systems in the DUT degree and in the LP SIL (vocational bachelor's degree in computer systems and software development).

M3101 - Principles of operating systems

Course content and responsibility shared with Robert Chignoli

Objectives. The understanding of the architecture of an operating system, especially multi-tasking.

Description. The course reviews the programming interface of the Unix system: the system call interface and the standard C library. Each important aspect of the system architecture is illustrated by implementing C programs under the GNU/Linux operating system. Particular attention is paid to portability concerns.

Course summary.
  • System overview.
  • Files and directories.
  • Standard I/O library.
  • Programs and processes.
  • Signals.
  • InterProcess Communication.
  • Posix threads.
  • Sockets.
Schedule.
  • Lectures (CM): 11 weeks, 1 session / week, 1 hour / session
  • Tutorial classes (TD) and Labs (TP): 11 weeks, 1 session / week, 2 hours / session

Prerequisites. M2101 Architecture and programming of the basic mechanism of a computer system.

References.
  • Stevens, W. R. and Rago, S. A. (2013). Advanced Programming in the UNIX Environment, Third Edition. Addison-Wesley Professional, 3rd edition.
  • Blaess, C. (2016). Développement système sous Linux. Eyrolles, 4e edition.

TLFADM23 - Bash Scripting

This course was part of the LP SIL ADMIN degree closed in 2017

Objectives. To be able to write advanced bash scripts useful for system administrators.

Description. The first part of the course consists in reviewing the bash command line interface under Linux. The second part concerns script writing. Examples of scripts include user account management, backups, remote processing via ssh, ...

Course summary.
  • Bash overview.
  • Managing files, directories and archives.
  • Managing processes with signals.
  • I/O redirections.
  • Strings
  • Regular expressions.
  • grep, sed, awk.
  • Shell programming.
  • Command and process substitution.
  • Parsing command line arguments.
  • Functions
Schedule.
  • Lectures (CM): 9 weeks, 1 session / week, 1 hour / session
  • Tutorial classes (TD) and Labs (TP): 9 weeks, 1 session / week, 3 hours / session

Prerequisites. Any course providing some introduction to Linux.


TLFADM21 - Linux System Administration

This course was part of the LP SIL ADMIN degree closed in 2017

Objectives. To master the routine administration tasks of a Linux system.

Description. Students learn how to manage an Enterprise Linux system. Although the lab sessions make intensively use of CentOS 7 or RHEL 7, most of the learned activetechniques also applies to other common versions of Linux distributions.

Course summary.
  • Install, configure an EFI multiboot Windows/RHEL system.
  • Yum packages manager.
  • Systemd.
  • Users administration.
  • Boot and custom kernel.
  • Networking and file systems.
  • Boot PXE and Kickstart.
  • SSH.
  • Web servers load balancing.
Schedule.
  • Lectures (CM): 10 weeks, 1 session / week, 1 hour / session
  • Tutorial classes (TD) and Labs (TP): 10 weeks, 1 session / week, 2 hours / session

Prerequisites. Any course providing some introduction to Linux.