CSC 173 is a core course for CS BS majors, and should be taken as needed for either curiosity or to fulfill prerequisites for other CS courses.

In terms of the "classical" system
of education, or
* trivium
* ,
it's mostly concerned with * grammar * and * logic *, with
a whiff of *rhetoric*.
The link above relates the trivium to childhood development
and early education, but it's a general concept. For 173, maybe we
can say:

- Grammar means learning the notation and rules of a formal system, either abstract, like lambda calculus, or more concrete, like a programming language.
- Logic means effectively using the formal system, typically to produce correct proofs or working programs.
- Rhetoric means using the formal system in conjunction with other things you know to draw broader scientific conclusions, make critical arguments, syntheses, and in general new "intellectual product". In 173, I'm thinking of the open-ended parts of programming exercises.

Prerequisites for enjoying 173 are curiosity, appreciation for learning diverse elegant things, and the lust for hard work.

Enjoyment may not be the word that comes to mind for you: true, 173 is aimed at future needs rather than current gratification. There are immediate benefits too: you'll become competent, independent, invulnerable, and hence fearless. Maybe not a bad investment of sweat equity.

There are three technical prerequisites for CSC 173:

- knowledge of at least one imperative programming language, like Python, Java, C, or C++
- understanding of fundamental data structures (lists, stacks, queues, trees, hash tables, "Big-Oh" complexity notions, ...).
- programming maturity (formalizing problems algorithmically, building programs of moderate complexity).

All of these prerequisites would be met by taking, for example, CSC 162 or 172: Data Structures or an equivalent course somewhere else. If you are unsure of your background, just look more deeply at the course details and expectations, and decide whether it's for you.

In more detail, we shall study:

- Formal Languages and Automata Theory.
- Applications of FLAT: scanners and parsers. The C Language.
- Propositional and Predicate Logic.
- Applications of Logic: Prolog and Circuit Design.
- Lambda Calculus
- Applications of the Lambda Calculus: Scheme
- Matrices and Applications: Matlab, Linear Algebra, ODE Solution, Graphics.

Check out the "How To" page and the Extra and Alternative Readings.

- Syllabus and Schedule -- The what, where, and when of everything.
- Grading -- Rubrics, hints, weights,...
- Exercises and Projects Including sample project reports.

Back to the course home page

Last Change: 6/27/11