| Routing/Approval: (chair’s initials/date) |
Department |
Division |
APC |
Senate |
Date of proposal: 4/10/06
Title: Programming Language Paradigms
Department and Course Number: CSCI 221
Crosslisted? Yes No X If yes, crosslisting department and number:
Credit: 1/2 Hours/week: 6 in one module
One-time: or Permanent Offering: X
Instructor: Steven Huss-Lederman
How will this course be taught, given present staffing, without creating a course overload?
This course proposal is part of a comprehensive change to the computer science curriculum. The course load under this proposal will not create an overload.
Are there any course fees? If so, specify what the course fees are intended to cover.
None
Prerequisite(s):
Computer Science 131
Catalog description (50-150 words, please):
If applicable, include the following language at the end: “May be repeated for credit if topic is different.”
Programming languages are a key component of all aspects of computer science. As with natural languages, our ability to express ideas is limited by the language that we use. In this course we start with language concepts that you think you understand very well, and show you that they are much more complex than you think. This includes concepts like variables, loops, arrays, parameters, and pointers. Not only do we dig deeper into these concepts, but we look at languages that take very different approaches than the ones you've seen in Java and/or C++. This expands your ability to think about how to solve problems and adds to the set of languages that you can choose. This course is guaranteed to expand your mind and increase your understanding of how computing is done.
Additional course content description (aims, purposes, etc.) beyond the catalog description:
The central goal of this course is to provide students with the necessary tools for critically evaluating existing and future languages and language constructs, e.g. in preparation for developing computer programs and systems for a variety of purposes. The course teaches the fundamental concepts of programming languages by defining the the design issues of the various language constructs, examining the design choices for these constructs in some of the most common languages, and critically comparing the design alternatives. Design choices are influenced by the historical context and environmental needs that spawned individual languages. Ease of implementation and performance of the implementation have been significant influences of language design, and hence these aspects of programming languages are included.
The course introduces the four fundamental paradigms of current programming: Procedural languages, object-oriented programming, functional programming, and logic programming. The last two of these paradigms in particular are expected to be new to the students, and hence substantial time is invested in understanding the concepts of these paradigms and the types of problems for which they are the preferred solution.
The lettered/numbered lines below come from CC2001. Underlined
items are considered essential to a basic curriculum in computer science.
Numbers in () indicate minimum number of hours to cover in a lecture style
according to CC2001.
Items with
a * indicate we plan to cover them in multiple courses.
Other lines include additional topics we plan to cover or clarification of
topics
we will cover within a CC2001 topic.
Course goals/objectives/outcomes:
Course structure. Check all that apply:
Lecture/Discussion X Studio Lab/Workshop X Other (Specify)
If current library or equipment holdings are inadequate, estimate the cost of additional holdings required.
$400-$800
Please attach names of a proposed text and/or core readings.
Form revised 11/04