+
2nd Year Courses
CSCB07: Software Design
An introduction to software design and development concepts, methods, and tools, using a statically-typed object-oriented language such as Java. Topics from: version control, build management, unit testing, refactoring, object oriented design and development, design
patterns and advanced IDE usage.
CSCB09: Software Tools and Systems Programming
Software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the system when programs are executed. Core topics: creating and using software tools, pipes and filters, file processing,
shell programming, processes, system calls, signals, basic network programming.
CSCB36: Introduction to the Theory of Computation
Mathematical induction with emphasis on applications relevant to computer science. Aspects of mathematical logic, correctness proofs for iterative and recursive algorithms, solutions of linear and divide-and-conquer recurrences, introduction to automata and formal languages.
CSCB58: Computer Organization
Principles of the design and operation of digital computers. Binary data representation and manipulation, Boolean logic, components of computer systems, memory technology, peripherals, structure of a CPU, assembly languages, instruction execution, and addressing techniques.
There are a number of laboratory periods in which students conduct experiments with digital logic circuits.
CSCB63: Design and Analysis of Data Structures
Design, analysis, implementation and comparison of efficient data structures for common abstract data types. Priority queues: heaps and mergeable heaps. Dictionaries: balanced binary search trees, B-trees, hashing. Amortization: data structures for managing dynamic tables
and disjoint sets. Data structures for representing graphs. Graph searches.
MATB24: Linear Algebra II
Fields, vector spaces over a field, linear transformations; inner product spaces, coordinatization and change of basis; diagonalizability, orthogonal transformations, invariant subspaces, Cayley-Hamilton theorem; hermitian inner product, normal, self-adjoint and unitary operations.
Some applications such as the method of least squares and introduction to coding theory.
STAB52: An Introduction to Probability
A mathematical treatment of probability. The topics covered include: the probability model, density and distribution functions, computer generation of random variables, conditional probability, expectation, sampling distributions, weak law of large numbers, central limit theorem,
Monte Carlo methods, Markov chains, Poisson processes, simulation, applications. A computer package will be used.
STAB57: An Introduction to Statistics
A mathematical treatment of the theory of statistics. The topics covered include: the statistical model, data collection, descriptive statistics, estimation, confidence intervals and P-values, likelihood inference methods, distribution-free methods, bootstrapping, Bayesian methods,
relationship among variables, contingency tables, regression, ANOVA, logistic regression, applications. A computer package will be used.