CS441 01: Organization of Programming Lanuages: Home

Home Assignments Schedule Roster Grades

Instructor Information

Instructor: Jon Sorenson
Office:Fairbanks 158 (CSSE Department)
Phone/Voicemail:940-9765
Home Phone:280-1168 (before 9pm please)
E-Mail Address:
jsorenso@butler.edu
Home Page URL: http://euclid.butler.edu/~sorenson/
Office Hours: MTWRF 10:30-11:50, or by appointment

Course Goals

The purpose of this course is to gain an understanding of how programming languages are described, designed, and implemented. Naturally, there will be a number of programming projects, which are described on the assignments page. The first assignment, which has 3 main parts, is designed to give us a glimpse into how compilers and/or interpreters for programming languages are written from their grammar. The later assignments focus on shorter sample programs from each of the programming paradigms:

  • Fortran for the imperative paradigm,
  • Scheme for the functional paradigm,
  • and Prolog for the logic paradigm.
The object-oriented paradigm is one with which you are already quite familiar. The concurrent paradigm is covered in other courses. We will also have a scripting project. Each paradigm involves a different way to think about how to express algorithms, write programs, and solve problems.

Prerequisites: CS151 or MA205, CS248, CS321, and CS351.

Towards a Liberal Education

The purpose of a programming language is to provide a way to explain an algorithm to the computer. The way we think, and the way in which we solve problems, is directly connected to the language or languages we think in. The study of the liberal arts is, at least in part, about learning to think critically. So, as a part of the College of Liberal Arts and Sciences, this course addresses the very processes of thinking and problem solving through the languages we use to form and express our thoughts.

Course Materials

The required text (pictured above to the right) is Programming Language Pragmatics, 2nd edition, by Michael L. Scott, Morgan Kaufmann, 2006.

We will use compilers/interpreters for Scheme, Fortran, Ada, and Prolog on thomas. Free software for each of these is available for download on the web; see the buttons to the left.

All handouts for this course will be made available through the world-wide-web (WWW) home page for this course. The URL is http://euclid.butler.edu/opl. We will discuss how to access this during the first day of class. If at any time you need a handout from the web, but are unable to print it, just ask me and I will print one for you. (Note that there is a "printer friendly" button at the bottom left.)

Grades

Your grade will be based on homework, programming projects, and exams as follows:

Homework (5) 100 points (20 points each)
Calculator Project (3 parts) 100 points (30-40 points each)
Short Programs (4) 100 points (25 points each)
Exams (2) 200 points (100 points each)
Total: 500 points

There is an opportunity to earn extra credit points on many of the programming projects or homework.

Penalties: If you e-mail your projects or homework without giving me a hard copy, I will deduct 2 points.

Letter grades are assigned according to the following scale:

93%90% 87%83%80% 77%73%70% 67%63%60%
AA- B+BB- C+CC- D+DD-

If the class average is low (say, below 70%), then I may curve slightly in your favor.

For a description of the grading criteria for programming assignments, see the Program Grading Criteria page, which is also accessible from the course home page.

Exams

The midterm and final will be in-class, open notes and open book.

Late Days

Each weekday that an assignment is late, you are charged one late day. Weekends, breaks, and holidays do not count as late days. You begin the semester with 15 free late days to use (or not use) as you wish. Once you go over this limit, each additional late day costs you 5 points.

Late days are designed to handle normal problems, such as having an exam or major project due in another course, or missing a day or two with a cold, or going to your cousin's wedding. If you have unusual circumstances please talk to me about it as soon as possible.

Partners

You may work in groups of 2-3 on the programming projects and homework. You must work alone on the exams.

Help

If you have questions or are confused, please feel free to come see me. I do not expect you to learn all the material the first time you see it; if you could do that, you wouldn't need me! You are welcome to visit me in my office anytime my door is open (which is most of the time). If you do not come during office hours, and I have work I need to do, I may ask you to come back later if you can. Don't take this personally. I enjoy teaching, and I like helping students, so don't think you are imposing on me by asking for help. This is my job.

Students with Disabilities

It is the policy and practice of Butler University to make reasonable accommodations for students with properly documented disabilities. Written notification from Student Disability Services is required. If you are eligible to receive an accommodation and would like to request it for this course, please discuss it with me and allow one week advance notice. Otherwise, it is not guaranteed that the accommodation can be received on a timely basis. Students who have questions about Student Disability Services or who have, or think they may have, a disability (psychiatric, attentional, learning, vision, hearing, physical, medical, etc.) are invited to contact Student Disability Services for a confidential discussion in Jordan Hall 136 or by phone at extension 9308.

I will be happy to comply with your needs as best as I am able.