Overview
Programming languages are the tools that we use to communicate with
computers to get them to do our bidding. Of the four most well-known
programming language paradigms, only object-oriented programming
(such as in Python and Java) is commonly seen outside of this course
here at Carleton. To better understand other programming language
paradigms, we will program in two other main paradigms: functional
programming (Scheme), and imperative programming (C). In doing so,
the goal is to gain an understanding of characteristics from each,
and to appreciate that each has made different trade-offs in design
reflecting the creators' goals. Additionally, practice at these
dramatically different approaches to programming help making learn
new languages easier to do. Moreover, we will develop in C an
interpreter for Scheme, in order to see how a programming langauge
interpreter can actually be constructed.
Instructor Information
- Instructor: Dave Musicant
- Office: CMC 326
- E-mail:
dmusicant
- Office phone: (507)222-4369
- Office hours:
check my web page
- Graders: Robert Lord (lordr), Zephyr Lucas (lucasz)
Textbooks
None. We'll be using a variety of online and reserved resources.
Your Grade
- Assignments: 55%
- Exam 1: 15%
- Exam 2: 15%
- Exam 3: 15%
Individual vs team grades
For each assignment that you work on in a team with another students, you'll
receive a grade based on the quality of that joint submission. This grade will
be used to form part of your overall homework average. Your overall homework
score will form part of your course average, which will be used to determine a final grade.
That said, you also must do work of passing quality on your individual
assignments and exams in order to pass the class.
Homework Policy
Each assignment will have a specific time for which it will be due, and your
electronic submissions are timestamped. You have four "late-days" that you can
use at anytime during the term, with no explanation or request needed. If you
are off-campus, if you are sick, etc., these are all exactly the sorts of
situations for which these late-days apply. You automatically use up a
late-day for every 24 hour period that passes when you turn in an assignment
late. For example, if you turn in two assignments late, each 17 hours after
the due time, that counts as two late-days. Likewise, if you submit a single
assignment 30 hours after the due time, that also counts as two late-days.
Assignments that are turned in late after your four late-days are used up will
not receive any credit.
Working Together
- Each programming assignment will either be a "team" problem
assignment or an "individual" assignment. I will assign one or partners to each
of you so that you can work together on the team problems. You should work alone
on the individual problems.
- Because you will be working in a team, I will ask
you to give honest and thorough feedback about the contributions
of you and your teammates. Providing an honest appraisal of your
peers is difficult, but it's also important. Your contribution to
your team, as measured both by peer evaluations and by my
observations, will contribute to your grade.
Collaboration, Plagiarism, and the Difference Between the Two
There are two different kinds of working together: collaborating
and plagiarism.
Collaborating
- Collaborating is good.
- You are encouraged to collaborate on ideas and program design.
- Programming is often a social effort, and there is much you can learn
by talking out the ideas in this class with each other.
- You can by all means talk to each other, look at each others' programs
to help fix problems, and share ideas.
Plagiarism
- Plagiarism is bad. DON'T DO IT!
- Any programs that you turn in should be your work.
- Even if you work with someone else and share ideas, you must still
write your own program.
- If a piece of your program utilizes someone else's idea, you must
make sure to give that person credit in program comments.
- Do not hand a printout of your program to other students. I
encourage you to work together to help debug your code, but you
should do so sitting together.
The following are examples of plagiarism:
- Taking someone else's program, changing comments and variable names,
putting your name at the top, and turning it in.
- Finding a similar program on the Internet, changing the variables
and comments around, putting your name at the top, and turning it in.
- Finding a similar program in a book, changing the variables and comments
around, putting your name at the top, and turning it in.
I am compelled by Carleton policy to submit plagiarism cases that I
find to the Dean of Students, who in turns brings the evidence before
the Academic Standing Committee. The academic penalty for a finding of
responsibility can range from a grade of zero in the specific
assignment to a F in the course.