Classes I took and things I'm supposed to know by now.
Classes I took at University of Illinois
- Compiler Construction
Compiler structure, syntax analysis, syntax-directed translation,
automatically constructed recognizers, semantic analysis,
code generation, intermediate language, optimization techniques.
Project: front end for a Pascal compiler. (Tools: FLEX, bison, GIRA,
etc.)
- Combinatorial Algorithms
Advanced data structures, graph algorithms, arithmetic algorithms,
geometric algorithms, string problems, parallel algorithms,
NP-completeness.
- Computer System Organization
Computer system analysis and design.
Organizational dependence on computations to be performed.
Speed and cost of parts and overall machines. Instruction set design.
Pipeline and vector machines. Memory hierarchy design. Quantitative
approach.
- Computer Networks and Distributed Systems
Introduction to concepts of transport connections and sessions;
design issues in transport layer and session layer protocols, terminal
and file transfer protocols, message handling protocols, etc. ;
methods to ensure network security and privacy; algorithms for
deadlock detection, concurrency control and synchronization in
distributed systems; models of distributed computation; networking
facilities and resource control and management methods in network and
distributed operating systems.
Project: Distributed file system.
Classes I took at BU
were of three
kinds: good, very good and irrelevant... I should have skipped the last kind
and just read the book, but unfortunately BU does not support that option.
I took classes in Computer Science
and Economics.
Well, here it goes:
- Introduction to Computer Science II plus Introduction to C
Intensive introduction to the C programming language and a complete
survey of fundamental ideas of computer language programming.
Introduction to list processing, dynamic storage allocation, data
storage structures, lists, strings, arrays, representation and use
of trees and graphs, stacks, queues, pointers, tables.
Sorting and searching techniques.
- Computer Systems
The fundamental concepts of computer systems and systems programming.
Thorough introduction to assembly language, discussion of various
basic system components, including editors, compilers, assemblers and
loaders.
- Introduction to Formal Languages and Automata Theory
The basic notations of formal languages and their relation to automata.
- Concepts of Programming Languages
Concepts involved in design and choice of programming languages.
Bindings, argument transmission, control structures. Environments;
compile-time, load-time, and run-time. Interpreters.
- Introduction to Computer Graphics
The course focuses on the fundamentals of 2D and 3D graphics algorithms
and geometry, with some discussion of input/output devices, animation
techniques, and visual realism.
- Introduction to Parallel Computing
The course introduces undergraduates to the theory of parallel
computation, parallel architectures, languages, and applications.
This course is the first of an interdisciplinary sequence of
computational science courses, coordinated through the
Center for
Computational Science
- Operating Systems
Examines process synchronization, I/O techniques, buffering, file
systems, processor scheduling, memory management, virtual memory,
job scheduling, resource allocation, system modeling, and performance
measurement and evaluation.
- Artificial Intelligence
Course covered basics of AI, introducing some of the more important
searching algorithms, game space, organization of knowledge(META
knowledge), fault diagnosis, neural networks, learning.
Quick reference to logic, applied AI, etc..
Economics classes covered intro and intermediate topics in micro and macro
economics, and economics statistics.
I majored in Applied Mathematics while studying at Gorky University, so I took
classes in :