Computer Science
Master course (2 years)

Recommended background knowledge

This is a list of suggested readings that cover the necessary background knowledge.
Please check if they are relevant for you.

Subjects common to all tracks

Mathematics

Programming

  • Programming Principles and Practice using C++
    B. Stroustrup
    Addison-Wesley Professional, 2008
    [Part I, II, III and Chapter 22]
  • Introduction to C++
    [optional, covers only a subset]

Operating systems

File system, ability to use a unix shell

Distributed systems

  • The art of concurrency
    Clay Breshears
    O’Reilly Media, Inc., 2009
    [Chapter 1-5 (required), Chapter 6-11 (optional, can be read independently)]
  • Concurrent Java tutorial
    [optional]

Database management systems

Either of:

  • Database Management Systems
    Raghu Ramakrishnan and Johannes Gehrke
    McGraw Hill Higher Education, 2003, Third Edition.
    ISBN: 0-07-246563-8
    [Chapters 1, 2, 3, 4, 5, 8, 12, 16,19]
  • Minicourses@Stanford

Business Intelligence

Software engineering

Basics of Sofware Engineering, UML,  OO and Java.

  • Object-Oriented Software Engineering: Practical Software Development Using UML and Java (2nd edition)
    Timothy Lethbridge and Robert Laganiere
    [Chapters 2, 5, 8 + Appendix A]

Web programming

Concepts related to client-side web programming. Specific technologies: HTML5, CSS, Javascript.

  • Learning PHP, MySQL, JavaScript, and CSS, A Step-by-Step Guide to Creating Dynamic Websites.
    R.Nixon
    O’Reilly, 2012
  • Learn HTML, Learn CSS, Introduction to Javascript on codecademy

Pervasive computing

Programming

Fluency in C programming; in particular, familiarity with pointers.

Operating systems

Software engineering

Basics of Sofware Engineering, UML, OO and Java.

  • Object-Oriented Software Engineering: Practical Software Development Using UML and Java (2nd edition)
    Timothy Lethbridge and Robert Laganiere
    [Chapters 1, 2, 3, 4, 5, 6, 8, 9, 10, 11 (only 11.1 and 11.2) + Appendix A]

Web programming

Concepts related to client-side web programming. Specific technologies: HTML5, CSS, Javascript.

  • Learning PHP, MySQL, JavaScript, and CSS, A Step-by-Step Guide to Creating Dynamic Websites.
    R.Nixon
    O’Reilly, 2012
  • Learn HTML, Learn CSS, Introduction to Javascript on codecademy

Networking

This books describes the Internet communication protocols, starting from the Application layer and going down to the Physical layer.

  • Computer Networking, a Top-Down Approach (6th edition),
    James F. Kurose, Keith W. Ross,
    Addison-Wesley, 2013
    [Chapter 1: Sec 1.1, 1.2 (omitting part on physical media), 1.3, 1.5, 1.7 (history of internet), Chapter 2 (Application layer): read Sec 2.1, 2.2, 2.5, Chapter 3 (Transport layer), Chapter 4 (Network layer)]

Health and life science

Mathematics

Web programming

Concepts related to client-side web programming. Specific technologies: HTML5, CSS, Javascript.

  • Learning PHP, MySQL, JavaScript, and CSS, A Step-by-Step Guide to Creating Dynamic Websites.
    R.Nixon
    O’Reilly, 2012
  • Learn HTML, Learn CSS, Introduction to Javascript on codecademy

Visual Computing

Mathematics

Web programming

Concepts related to client-side web programming. Specific technologies: HTML5, CSS, Javascript.

  • Learning PHP, MySQL, JavaScript, and CSS, A Step-by-Step Guide to Creating Dynamic Websites.
    R.Nixon
    O’Reilly, 2012
  • Learn HTML, Learn CSS, Introduction to Javascript on codecademy