CSE Exemption Exams

Students who have covered the material presented in one or more of the below courses can apply for exemption or advanced standing and will be asked to complete a preliminary assessment of one hour so that the school can determine their basic level of knowledge. Students that pass the preliminary assessment will then be given the opportunity to sit a version of the final exam and if successful (pass mark of 50%) be eligible for Advanced Standing or Exemption. Where possible, students should attend the first lecture of the course that they are considering sitting an exemption exam for and talk to the lecturer in charge to get a better appreciation of whether seeking exemption or advanced standing is appropriate.

Students should be aware that if they have covered similar material a few years ago but have not put it into practice, their knowledge of the subject material might no longer be effective, and taking the course would be recommended. The purpose of the exemption exam is to let students demonstrate that their knowledge of the subject material corresponds to what we expect them to have mastered by the end of the course.

Students interested in applying for Advanced Standing or exemption should complete the application form and we will determine whether you are eligible for online self-assessment or formal exam.

The CSE Exemption Exam will be held every semester on:

Tuesday of O-Week

To apply for Advanced Standing or exemption please complete the MIT Application form (pdf) and submit it to the CSE Student Office.


To help students prepare for the exemption exams, the information below describes the topics to be covered in each of the courses, together with references (textbook and extra reading).

If you have any questions, contact the CSE Student Office.




  • Kenneth A Ross and Charles RB Wright, Discrete Mathematics, 5th edition, Pearson Education

Extra reading:

  • Alfred V Aho and Jeffrey D Ullman, Foundations of Computer Science: C Edition, Computer Science Press


  • Sets, functions and sequences
  • Logic for proofs
  • Basic relations
  • Induction and recursion
  • Recurrences: solutions and their order of growth
  • Structured counting procedures
  • Combinatorial principles
  • Graphs and trees
  • Random events
  • Random variables and expected values
  • Boolean expressions
  • Algebra of relations



The Python Tutorial: https://docs.python.org/3.4/tutorial/

Extra reading:

John Zelle, Python Programming: An Introduction to Computer Science https://fbeedle.com/

Brad Miller and David Ranum, Problem Solving with Algorthims and Data Structures Using Python http://runestoneinteractive.org/library.html

Allen B. Downey, How to think like a Computer Scientist: Learning with Python http://runestoneinteractive.org/library.html


  • Variables, Control Flow
  • Builtin Types: Lists, Tuples, Dictionnaries
  • Functions
  • Files
  • Objects, Inheritance
  • Recursion
  • Linked lists
  • Stacks, Queues
  • Heaps
  • Trees, Binary search trees
  • Sorting



Robert Sedgewick, Algorithms in C (Parts 1-4), 3rd edition.
Bruce Eckel, Thinking in Java (3rd edition). Available locally on-line.
Data Structures and Algorithms in Java (4th edition) by Goodrich and Tamassia, Wiley


  • Elementary data structures: implementation and analysis.
  • Stacks, deques and lists. Arrays versus linked structures.
  • Analysis of algorithms.
  • Internal and external searching and sorting.
  • Trees. Priority Queues. Heaps.
  • Maps and Dictionaries. Properties of hashing functions.
  • Search Trees. Balanced Trees. B-Trees.
  • Java: inside classes, control statements, operators, primitive types, exceptions, arrays, class Object,
    packages, simple IO.
  • Graphs: Representation, implementations and operations.
  • Elementary graph algorithms.



Fredrick M. Cady, Microcontrollers and Microcomputers: Principles of Software and Hardware Engineering, Oxford University Press, 1997


  • AVR Assembly Programming
  • Interrupt System
  • Serial Communication
  • Analog Input/Output
  • Instruction Set Architecure



  • Data modelling
  • Principles of database design
  • Data manipulation languages
  • Database application techniques
  • Introduction to DBMS internals
  • Introduction to advanced databases
  • Design and implementation of a database application using SQL and stored procedures



Bratko, I. Programming in Prolog for Artificial Intelligence, 3rd edition, Addison-Wesley, 2000.

Allen, J. Natural Language Understanding, 2nd Edition, Benjamin Cummings, 1995.

Russell, S. and Norvig, P., Artificial Intelligence: A Modern Approach, Second edition, Pearson Education, 2003.


  • Prolog programming: terms, rules, recursion, the cut
  • Rule-based systems
  • Frames and semantic networks
  • Search
    • Basic search algorithms (depth-first, breadth-first, best-first,
         hill climbing)
    • A* search, adversarial search (minimax, alpha-beta)
  • Propositional logic: Truth table semantics, logical equivalence, soundness and completeness, propositional resolution
  • First-order logic: Quantifiers and scope, interpretations, logical equivalence, first-order resolution, relation to Prolog
  • Reasoning under uncertainty: Bayes' rule, conditional independence, computing with probability tables
  • Machine learning: Error backpropagation learning in feedforward network creating decision trees - the ID3 algorithm
  • Natural Language Processing: Linguistic basics context-free grammars parsing using
    • raw Prolog
    • logical form
    • lambda-expressions and their use in logical forms
    • semantic interpretation of simple sentence



Computer Networking: A Top-Down Approach, James Jurose and Keith Ross, 4th Edition, Addison Wesley, 2007

Computer Networks:  A Systems Approach,  Larry Peterson and Bruce Davie, 4th Edition, Morgan Kaufmann, 2007


  • Internet Protocol Architecture
  • Circuit and Packet Switching
  • Application Layer
  • HTTP
  • E-mail
  • FTP
  • Peer to Peer Networks
  • DNS
  • Transport Layer Principles
  • TCP
  • UDP
  • Congestion Control
  • IP
  • Network Layer Principles
  • IP Addressing
  • Virtual Circuits
  • Routing Algorithms
  • Link Layer Services
  • Multiple Access Protocols
  • Link Layer Addressing
  • Ethernet
  • Hubs and Switches
  • IEEE 802.11 Local Area Networks
  • Network Security Basics
  • Public and Private Key Cryptography
  • Digital Signatures
  • Authentication, Firewalls.