An introduction to the findings, theories and methods of modern structural linguistics. Includes phonetics, phonology, word-formation, syntax, semantics and pragmatics. Basic analytical skills are emphasized. Examples will be drawn from a wide variety of natural languages.
A hands-on approach to software development at the individual and small team level. Application of software tools- including scripting languages, system utilities and libraries- for construction of small software systems. Integrated with and motivated by programming practices, system development, testing and maintenance issues.
An introduction to elementary applied propositional and predicate logic. Fundamental proof techniques with an emphasis on induction. The theory of sets, relations and functions. Course concepts are related to Computer Science areas, with an emphasis on relational databases.
Object-oriented programming. The use of modeling, abstractions, patterns, and GUIs to design and build a good OO system. Unit testing to ensure that it works. Application of the techniques to interactive systems.
Laws of probability, discrete and continuous random variables and their distributions, moments, functions of random variables and their distributions, Central Limit Theorem.
A comparative study of programming languages and paradigms. Introduction to functional programming languages, such as Haskell; topics include: recursion, higher-order functions, polymorphic types, lazy evaluation. Introduction to logic programming languages, such as Prolog; topics include: unification, backtracking, resolution, non-determinism. An introduction to interpreters, parsers, program transformations, and semantic models.
An introduction to the design of contemporary computer systems, focusing on the hardware-software interface and the upper hardware levels. Topics include machine and assembly language, computer arithmetic, the processor datapath and control, pipelining, memory hierarchies, and I/O systems.
Formal abstract data types; tree representations and searching: ordered trees, balanced trees, simple spacial trees; graph representations and searching: path algorithms, dfs, bfs, backtracking; direct and Btree files; and sorting algorithms.
A study of linear equations, matrices and operations involving matrices, determinants, vector spaces and their linear transformations, characteristic values and vectors, reduction of matrices to canonical forms, and applications.
Sampling theory, estimation, confidence intervals, testing hypotheses, goodness of fit, analysis of variance, regression and correlation.