University of Orleans LIFO LIFO

David Teller: Teaching

2008-2009

Mathematics for Computer Science

Object-oriented programming

Web pages

2007-2008

Mathematics for Computer Science

Functional Programming

Web pages

Calculator
Napoléon's résumé

Object-Oriented Programming

2006-2007

Compilation

Functional Programming

Cooperative exam
Final exam

Mathematics for Computer Science

DBMS

Algorithmics 1 Exercises

Object-Oriented Programming Lectures

Object-Oriented Programming Exercises

Previous lives

Prolog slides

Prolog half-term exams

Prolog end-term exams

Prolog homework

C2i

Management

I am in charge of the implementation of the Certificat de Compétences Informatiques for the Faculty of Sciences of Bourges. Due to technical issues in University of Orléans, implementation has been postponed by one year.

Compilation

Lectures + Labs

I am currently in charge of lectures and lab courses of Compilation for students in first year of Master of Computer Science Engineering, using the C language. As an exercices we are building a compiler for the GNU Make language.

Introduction
  • What is compilation ?
  • Compilers vs. interpreters vs. virtual machines vs. code rewriters vs. preprocessors
  • The compilation process.
Makefile
  • Role
  • Syntax
  • Rules
  • Patterns
  • Variables
Lexers
  • Role
  • Relation with regular languages
  • FLex
  • Writing a Flex lexer for Makefiles
Parsers
  • Role
  • Relation with regular languages
  • Bison
  • Writing a Bison parser for Makefiles
Abstract Syntax Trees
  • Role
  • Defining ASTs
  • Designing ASTs for Makefiles
Analysis
  • Static analysis
  • Dynamic analysis
  • Optimizations
  • Finding root targets
Producing code
  • Intermediate languages, bytecodes and machine code
  • Spitting out the code !

Mathematics for Computer Science

Lectures + Labs

I am currently in charge of lectures and lab courses of Mathematics for Computer Science, for students in second year of Licence of Mathematics and Computer Science.

Booleans
  • The minimal boolean algebra
  • Common operators
  • Proving things with truth tables
  • Binary numeration
  • Boolean algebras
  • Counting with boolean operators
  • Powersets as boolean algebras
Logic
  • Terms, propositions and formulas
  • Valuations
  • Formal proofs
  • Proofs on proofs
  • Application to mathematical proofs
  • Proofs vs. type systems
Induction and structural induction
  • Defining a set by structural induction
  • Proving things by structural induction
  • Defining a function by structural induction
  • Peano's arithmetics
Algorithmic complexity
  • The notion of algorithmic complexity
  • Big O, small o, theta
  • Proving complexity by induction
  • Complexity of common algorithms

Functional programming

Lectures + Labs

I am currently in charge of lectures and lab courses of Functional Programming, using Objective Caml, for students in second year of Licence of Mathematics and Computer Science. Lecture notes are available in French as a wikibook. The students have a personal project to design and implement during the term. In addition, as a support for lectures, during the term, we design a Game of Life using OpenGL.

Introduction
  • About OCaml (lecture 1)
  • Why OCaml ? (lecture 1)
Bases of OCaml
  • OCaml as a calculator (lecture 1)
  • Values (lecture 1)
  • Functions (lecture 2)
  • Currification (lecture 2)
  • Recursion
  • Abstract functions
  • When mathematicians are in charge
Data structures
  • The role of data structures
  • The type system
  • Simple types
  • Type definitions
  • Type constraints
  • Cartesian products (tuples and structures)
  • Labelled union (sum types)
  • Pattern-matching
  • Modules
  • Modules and compilation
  • Private types
  • Higher-order modules
  • Types and sets
Computing with state
  • Monads
  • Error-handling (exceptions vs. error monads)
  • State (references vs. state monads)
  • Side-effects (i/o vs. io monad)
Graphics
  • Introduction to OpenGL
  • Dots
  • Shapes
  • Curves
  • The third-dimension
Parsing (if time permits)

Databases

Lectures / Labs

During the first term of year 2007-2008, I have been in charge of combined lecture-lab classes of database management systems, for students in Master 2 Pro of Science and Technology with no prior knowledge of programming or computer science. Each student had to design, implement and document a database for inventory management during the term. In addition, we designed during the classes a database for, er, management of wanted bandits in the world of Lucky Luke.

Information.
  • The notion of information
  • Real-world information inside a computer
  • From syntax to semantics
  • Finding information from other information
  • Finding information from physical objects
  • Dangers of information
  • Dangers for information
DataBase Management Systems
  • History
  • Various models of information storage
  • The ideal of application-independence
  • The role of hardware, software and intelligence
  • Existing solutions
  • Everyday DBMSes
Relations
  • The relational model
  • Data types, data representations and value sets
  • Attributes
  • Labels
  • Primary keys
  • Foreign keys
  • Role and management of constraints
  • Normal Forms
  • Representing sets of values within the Relational model
  • The Data Definition Language
MySQL
  • About MySQL
  • Limitations of MySQL
  • Distribution
  • Utilities
  • Remote usage of MySQL
  • The command-line
Information again
  • Syntax of information
  • Adding, removing and altering information
  • The Data Manipulation Language
  • Viewing information
  • Locating information
  • Combining information (aka the relational algebra)
  • Information that won't fit
  • What about loops ?
Users, consumers and intruders
  • Sometimes, people just don't like you
  • Social engineering
  • The last barrier: the log
  • The first barrier: the OS
  • Somewhere in-between: the user interface
  • The main barrier: least privilege discipline
  • The Data Control Language
Miscellanea
  • Backups and exports
  • Introduction to transactions
  • Designing efficient user interfaces
  • Microsoft Access, OOBase and the others
  • Using SQL from a programming language

Web pages

Lectures / Labs

During the first term of year 2007-2008, I have been in charge of combined lecture-lab classes of web pages, for students starting their Licence of Science. Each pair of students was to design and compose a web page during the term.

The Internet.
  • History
  • Protocols
  • Open standards
  • Internet vs. The web
Content.
  • Structure of a web page
  • Resources
  • URIs
  • XHtml
  • Webography for the web developer
  • Images
  • Standards, non-standards, versions and incompatibilities
  • Encodings, entities
  • Validation
  • Evolution of XHtml
  • Quoting sources
Style.
  • Cascading Style Sheets
  • Properties and values
  • Selectors, elements and pseudo-elements
  • Inline styles
  • Webography for the web developer
  • Validation
Action.
  • Introduction to JavaScript
  • Variables
  • Functions
  • Events
  • Recursion
  • Arrays
  • Elements of the Document Object Model
  • Spotting and fixing errors

Object-Oriented Programming

Lectures + Labs

During the first term of year 2007-2008, I have been in charge of lectures of Object-Oriented Programming using Java, for students in their second year of Licence of Mathematics and Computer Science. During the term, as support for the lectures, we designed a version of Tetris.

At the end of the term, the class had one full day to cooperatively implement that Tetris. They succeeded.

Java
  • Why Java ?
  • Java vs. other languages
  • A quick recap of classes
  • A quick recap of fields, methods, arguments, variables and this
  • A quick recap of variables and functions
  • A quick recap of constructors
  • A quick recap of usual statements
  • A quick recap of types
Design by interfaces
  • Interfaces
  • Specifying interfaces
  • Implementing interfaces
  • Thinking with interfaces
  • Documenting interfaces
Packages
  • The notion of package
  • Forming packages
  • Importing packages
  • Public vs. package-protected
  • Dividing a project into packages
  • Packages + interfaces = modularity
User Interfaces
  • Toolkits
  • Swing and AWT
  • Frames
  • Components
  • Layouts
  • Colors
  • Resources
Type safety
  • Why type safety ?
  • Privacy
  • Typesafe enumerations
  • Typesafe unions
  • A first look at collections
Exceptions
  • Exceptional circumstances
  • Fatal errors vs. stronger returns
  • Throwing and catching
  • When to catch and when not to
  • Common exceptions
  • Creating new exceptions
  • Cleaning-up resources
Input/Output
  • Working with files
  • Input streams, output streams
  • Iterating upon streams
  • Combining streams
  • Stream buffers
  • Readers and printers
Class hierarchies
  • Reusing and specializing
  • Inheriting
  • Construction
  • Polymorphism
  • Hierarchies
  • Run-time class information
  • Swing, Exceptions, I/O hierarchies
Miscellanea
  • High-level loops
  • Hash tables
  • Working with trees
Site maintained by: David Teller. Content is my responsibility. Works way better with any decent browser (Firefox, Safari, Konqueror, Opera...). Last updated in January 2008.