You should probably have a simple understanding of the following topics:
- Discrete Math (sets, relations, trees, graphs, matrices, number theory)
- Data Structures (in a more applied sense, how trees, lists, stacks, queues, and strings work)
- Basic Algorithms (core concepts, sorting, searching, Big-O notation, etc)
- Computer Architecture (digital logic, bit operations, micro-components, cache, memory, assembly programming)
- Miscellaneous (regular expressions, context-free languages, finite state / pushdown automata, Turing machines and computability, lexical and parsing tools)
Optional, and will probably help a lot:
- Operating System Design (process management, kernel design, synchronization, scheduling, events, locks, threads, and stack vs heap)
manpreet
Best Answer
2 years ago
I am non computer science undergraduate and work as a web-developer(java, python, AS3 etc.) as a professional. I take 1 course per semester at my local university. I had taken Artificial Intelligence(comprising logic, context free grammar, CYK parsing, introductory NLP, markov chains, HMM etc.) last semester.
I am planning to take an introductory course in compilers in the coming semster which covers the following syllabus:
My question is that, are there any computer science subjects which I should know before taking this course? If yes, it would be great if you could please list those courses.