UMaine COS 301: Programming Languages

Announcements
9/5: Welcome to the Fall 2018 COS 301 course
**ROOM CHANGE!** The class now meets in 116 Neville Hall

This course covers theoretical and design principles underlying computer programming languages. A programming language is a tool for expressing problems and solutions in a formal, precise way so that a computer can carry out the solution. They are therefore a bridge between a human programmer’s way of thinking about a problem and the way a computer can carry out that problem. Computers can only ``understand’’ machine language; a programming language provides a virtual machine to the programmer that is much closer to the way he or she thinks and that is much easier to understand and use than the raw machine.

The course will give you a good understanding of what a programming language is, how a language’s grammar is specified, and the meaning of programs written in a language. Some attention will be given to how the language is translated into machine language or interpreted to carry out the program. We will cover many aspects of imperative, object-oriented, functional, and logic programming languages.