Background knowledge

This is a list of suggested readings that cover the necessary background knowledge.
Please use it to check if you already have the necessary background knowledge for the track you would like to choose before filing the pre-application form.

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

Subjects tracks-specific

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
Security

Knowledge of programming, operating-systems and networking.

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)]
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
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

Download the list of subjects in PDF.