Courses

Professor Cartwright’s signature course is COMP 411, Principles of Programming Languages.

COMP 411 – Principles of Programming Languages: Undergraduate level. This course is an introduction to the principles of programming languages. It focuses on: identifying the conceptual building blocks from which languages are assembled and specifying the semantics, including common type systems, of programming languages. The course enables students to analyze the semantics and pragmatics of the old, new, and future programming languages that they are likely to encounter in the workplace (e.g., Fortran, C, C++, Java, Visual Basic, C#, Perl, Python). They will also be able to build efficient interpreters for new languages or for ”special-purpose” languages embedded in software applications. Finally, they will be much better equipped as software developers because they will understand how to define and implement whatever linguistic extensions are appropriate for simplifying the construction of a particular software system.

His undergraduate and graduate level courses also include:

COMP 311 – Functional Programming: Undergraduate level. An introduction to concepts, principles, and approaches of functional programming. Functional programming is a style of programming where the key means of computation is the application of functions to arguments (which themselves might be functions). This style of programming has become increasingly popular in recent years because it offers important advantages in designing, maintaining, and reasoning about programs in many modern contexts such as web services, multicore programming, and cluster computing. Course work consists of a series of programming assignments in the Scala programming language and various library extensions such as Apache Spark.

COMP 501 – Production Programming: Graduate level. This course focuses on the principles and practices of test-driven software development, which have been popularized under the banner of “Extreme Programming.” To provide students with practical experience, the course engages students in the development of open source production programs written in JAVA or C#. The DRJAVA programming courses was developed by students in this course. Some of the major topics covered in course lectures include design patterns for controlling concurrency and refactoring transformations to improve legacy code. Mutually Exclusive: Credit cannot be earned for COMP 501 and COMP 402.

Other Courses and Lectures