MICS Technical Preparation Resources
The references below are provided to help you prepare for the math and programming required in the Master of Information and Cybersecurity (MICS) program delivered online by the UC Berkeley School of Information (I School).
Start Here
The following two Math and Python self-study guides are the key resources to help you evaluate your technical preparedness for MICS coursework. If you feel comfortable with the material in these guides, you can comfortably waive CYBER 206: Programming Fundamentals for Cybersecurity your first semester, and take a fourth advanced elective during your penultimate semester instead.
We encourage you to use the additional resources below for self-study to build your confidence in math and Python to either waive CYBER 206 or give yourself a head start on the material covered in CYBER 206.
Self-study materials relevant to other MICS coursework are also included below.
Math
- *College Algebra: CYBER 202: Cryptography requires understanding of the Algebra topics covered in the Math Self-Study Guide linked above, particularly modular arithmetic, which is used heavily in the CYBER 202: Cryptography class. The CYBER 206: Programming Fundamentals class provides instruction on these required math topics.
College Algebra
This math self-study guide focuses on concepts used in the MICS Cryptography course.
Additional resources to help with Arithmetic, Algebra, and Discrete Math concepts:
- Arithmetic and Algebra
- Properties of Real Numbers: Properties of Real Numbers
- Exponents Properties: Algebra Basics: Laws Of Exponents – Math Antics
- Root Properties: Algebra: Square Roots (and Nth Roots) and Their Properties
- Multiplicative Inverse
- Logarithm Functions & Properties
- Solving linear equations
- Quadratic Functions
- Polynomial Arithmetic: Polynomials – Adding, Subtracting, Multiplying and Dividing Algebraic Expressions
- Number Systems:
- Discrete Math:
Statistics
Familiarity with Statistics is helpful preparation for the following MICS advanced electives:
- CYBER 233: Privacy Engineering
- CYBER 207: Applied Machine Learning for Cybersecurity
- CYBER 215: Usable Privacy and Security
Resources to help with Statistics concepts:
The following chapters in Feller, W. (1968). An introduction to probability theory and its applications, volume 1 (3rd ed.). New York: Wiley. are assigned in CYBER 233:
- Note on the Use of the Book.
- Introduction.
- Chapter I, The Sample Space.
- Chapter V, Conditional Probability; Stochastic Independence, Sections 1–4.
- Chapter IX, Random Variables; Expectation, Sections 1–5 and 9.
- Chapter VI, The Binomial and the Poisson Distributions.
Programming
* Highest priority
Python
Python will get you started writing programs more quickly than other languages as it allows you to focus on your development task rather than programming language syntax. The MICS Cryptography, Network Security, Privacy Engineering and Applied Machine Learning courses use Python.
Python Self-Study Guide for MICS and Python Self-Study Guide Solutions for Jupyter Notebooks
Additional Resources:
C
In the CYBER 204: Software Security course you will review C code, but do not need to write C programs. Familiarity with the C programming language is important for understanding exploitable vulnerabilities in low-level infrastructure (i.e., machine and system processes). C is also useful for the CYBER 211: Operating System Security class and for implementing cryptography protocols.
Resources to help with C programming:
UNIX and Shell Scripting
The basics of UNIX programming, shell scripting, and using the command line (rather than a Graphical User Interface) can be useful in CYBER 210: Network Security, CYBER 252: Security Operations, and CYBER 211: Operating System Security.
Resources to help with Unix and shell scripting:
Git/GitHub
GitHub is a widely used source code version control repository.
Resource suggestions compiled by MICS alumni Sudip Kar and Francisco Laplace.