Welcome to computer science field!
In order to improve your software development and software engineering research knowledge, we recommend that you learn about some topics of computer science related to software engineering field.
Why should I care about these topics?
– Because these topics will provide you knowledge so that you can develop COMPLICATED software that only A FEW developers can create. They will help you create INNOVATIVE software that no one has made. They will provide you a more broad view and tools for your software engineering research.
Here are some important topics that you will want to learn about. Please learn them BY ORDER.
- Discrete Mathematics. Please read this “Kenneth H. Rosen (2012). Discrete Mathematics and Its Applications” book or this “Alfred V. Aho and Jeffrey D. Ullman (1994). Foundations of Computer Science” book (free online version). Alternatively, please watch this “MIT 6.042J Mathematics for Computer Science” course.
- Computer Networks. Please read this Andrew S. Tanenbaum and David J. Wetherall (2011). Computer Networks. Pearson Education book and this “James F. Kurose and Keith W. Ross (2013). Computer Networking: A Top-Down Approach” book and this “Mark Minasi et al. (2014). Mastering Windows Server 2012 R2” book.
- Computer Architecture. Please read this “David Harris and Sarah Harris (2012). Digital Design and Computer Architecture” book.
- Programming Language Theory. Please read this Michael L. Scott (2015). Programming Language Pragmatics. Morgan Kaufmann book or this Robert W. Sebesta (2015). Concepts of Programming Languages. Pearson book.
- Compilers. Please read this “Alfred V. Aho et al. (2006). Compilers: Principles, Techniques, and Tools” or this “Keith Cooper and Linda Torczon (2011). Engineering a Compiler” book.
- Speech and Language Processing. Please read this “Daniel Jurafsky and James H. Martin (2008). Speech and Language Processing” book.
- Digital Image Processing. Please read this “Rafael C. Gonzalez and Richard E. Woods (2007). Digital Image Processing” book.
- Applied Cryptography. Please read this “Bruce Schneier (1996). Applied Cryptography: Protocols, Algorithms and Source Code in C” book.
- Abstract Algebra. Please read this “Tom Judson (2016). Abstract Algebra: Theory and Applications” book.
- Mathematical Cryptography. Please read this “Jeffrey Hoffstein et al. (2008). An Introduction to Mathematical Cryptography” book.