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.
- 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.
- 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.
- 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.
- Recursion.
- Abstract data types and iterators.
- Lists ADT.
- Trees and graphs ADT.
- Search trees.
- 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
- 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.
- Concurrency and Java threads.
- Thread pools.
- Socket programming.
- Remote Method Invocation.
- 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.
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.
- System overview.
- Files and directories.
- Standard I/O library.
- Programs and processes.
- Signals.
- InterProcess Communication.
- Posix threads.
- Sockets.
- 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.
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, ...
- 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
- 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.
- Albing, C., Vossen, JP. and Newham, C. (2017). bash Cookbook, 2nd Edition. O'Reilly Media, Inc., 2nd edition.
- Cisco Networking Academy : Linux Essentials - 160616 active
- Bourne-Again SHell manual
- Bash One-Liners
- Guide avancé d'écriture des scripts Bash
- Introduction to Linux. A Hands on Guide
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.
- 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.
- 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.
- System administrator's guide: deployment, configuration, and administration of Red Hat enterprise linux 7
- Networking Guide : Configuration and Administration of networking for Red Hat Enterprise Linux 7
- 10 Essential Skills for Novice, Junior and Senior SysAdmins
- High-Availability Storage with GlusterFS on CentOS 7 - Mirror across two storage servers
- Setting Up an NFS Server and Client on CentOS 7.2
- How to Create a Local Red Hat Repository
- How to Install and Configure Apache Hadoop on a Single Node in CentOS 7
- How to Install Your Own Cloud Platform with OpenStack in RHEL/CentOS 7