Course miscellany

Famous Friday

programming language quotes

"A real programmer can program in any language." - Robert Dewar and Schonberg

"A language that doesn't affect the way you think about programming, is not worth knowing." - Alan Perlis

"There are only two kinds of programming languages: those people always bitch about and those nobody uses." -Bjarne Stroustrup

"Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration." -Stan Kelly-Bootle

"Voodoo Programming: Things programmers do that they know shouldn't work but they try anyway, and which sometimes actually work, such as recompiling everything." -Karl Lehenbauer

"[The BLINK tag in HTML] was a joke, okay? If we thought it would actually be used, we wouldn't have written it!" -Mark Andreessen

"I had a running compiler and nobody would touch it. They told me computers could only do arithmetic." -Rear Admiral Grace Hopper

"If you don't think carefully, you might think that programming is just typing statements in a programming language." -Ward Cunningham

"A language that doesn't have everything is actually easier to program in than some that do." -Dennis M Ritchie

"Computer programming is tremendous fun. Like music, it is a skill that derives from an unknown blend of innate talent and constant practice. Like drawing, it can be shaped to a variety of ends – commercial, artistic, and pure entertainment. Programmers have a well-deserved reputation for working long hours but are rarely credited with being driven by creative fevers. Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination, but because their imagination reveals worlds that others cannot see." -Larry O'Brien and Bruce Eckel

course Description

This course provides an introduction to the theory and practice of formal languages. The topics of automata theory, grammar formalisms and Turing machines provide the theoretical foundation for practical issues such as data typing, control structures and parameter passing. Programming assignments involve the use of several languages. Prerequisites: CSC 230, MTH 206.

MWF 10:50 - 12:00 in Alamance 315

course units

  • Programming Languages
    • Object-oriented (Java): A look at how Java works, the characteristics of object-oriented programming, and reflection
    • Scripting (Python): Intro Python and characteristics of interpreted languages and scripting
    • Logic (Prolog): A first look at a declarative language, and the characteristics of logic programming
    • Imperative (C): Introduction to C, imperative programming, and memory management
    • Functional(Scheme): Starting with Scheme, functional programming, automated theorem proving
  • Programming Language Implementation Issues
    • Naming Systems
    • Type Systems
    • Parameter Passing
    • Memory Management
  • Theory of Computation
    • Grammars
    • Finite State Automata
    • Regular Expressions
    • Non-regular languages and pushdown automata
    • Turing Machines