CS-430: Programming Languages
Fall 2004 Semester
© 2004 Elizabeth Adams
Professor:
Dr. Elizabeth Adams 213
ISAT/CS
Phone: 540-568-1667
adamses@jmu.edu
Office Hours: Monday 4-6 pm;
Tuesday 11-12 noon;
Wednesday 1-3 pm;
Thursday 6:15-7:15 pm
Class
Meeting Times:
Section 0001 Tuesday,Thursday -3:30-4:45 – HHS 2208
Section 0002 Tuesday,Thursday – 5:00-6:15 – HHS 2208
Final Exam Information
Tuesday, December 7th –
6:30-8:30 pm – ISAT/CS 236
Catalogue
Description:
Several
actual programming languages are studied in terms of the fundamental principles
of computer programming language design, including object-oriented programming,
functional programming, concurrent programming and logic programming. Prerequisites: CS 240, CS 350.
Prerequisites:
CS 240, CS 350
About the
Course:
It has been said that languages shape the way we think. Thus it follows that different programming
languages with different grammars and syntax, representing different paradigms
of thought lead us to solve problems in different ways. This course will look at the underlying
structures of programming languages and see how these structures are
implemented in a variety of languages.
The particular languages examined in the course will depend on the
backgrounds of the students in the course.
By writing short program in a variety of different languages, students
will develop their ability to learn to use new languages and to recognize the
threads common to all programming languages.
Students will have the opportunity to explore a language not covered in
class and to prepare slides on the language and present them to the class.
Required
Text :
Sebesta, Robert W. Concepts of Programming Languages,
Sixth Edition, Addison Wesley, Boston, 2003
BURKS (the Brighton University Resource Kit for Students) is
a non-profit set of 4 CDs containing over 2 gigabytes of useful resources for
computer science students. It is intended to provide some of the benefits of
the Internet to students with no (or limited, or expensive) Internet access. It
provides students with a comprehensively indexed website on CD-ROM which can be
used either online or offline. The whole BURKS collection is online at http://burks.brighton.ac.uk/burks/index.htm BURKS includes a range of tutorial and
reference material ranging from short introductions to full-length textbooks,
as well as several hundred megabytes of software which can be installed at the
click of a mouse. To use BURKS, you
need an IBM PC or compatible running Windows 95 or later. A bundled copy of Netscape Navigator 3.04 is
used by default, but you can choose to use an existing browser if you prefer.
If you do use your own browser, the CD also provides a free-text search engine
to help you find relevant material on the CDs.
BURKS is produced by John English.
The student ACM chapter will be selling copies for $10. If you already own BURKS 4 or 5, you may
want to download the additional material.
If you don't own either of them, you need to buy BURKS 6. You will be programming in a variety of
languages this semester and you will need compilers or interpreters for those
languages. BURKS contains compilers
and/or interpreters for: Ada 95, APL and J, Assembler, C, C++, Eiffel, Forth and
PostScript,.Fortran, Haskell,.
Icon, Java and
JavaScript, Lisp and Scheme,
ML, Modula-2,
Oberon,
Objective-C,
Pascal
and Delphi, Perl, Prolog, Python, Smalltalk,
Snobol,
Tcl/Tk and other
languages. Note that this
information about BURKScomes almost verbatim from the online information about
BURKS.
Student
Evaluation:
As I have to assign grades, you
have to be evaluated. This is a sad, but necessary part of college life. Please
remember that you are here to LEARN!!!!
Keep this foremost in your mind. This is for you! You are paying me and my
colleagues to present, profess and teach you new concepts and ideas. Please complain if you are not getting this,
because we certainly will if we are not seeing satisfactory effort!
Grade Scale:
A : excellent ~90-100
B : very good ~80-89
C : satisfactory
~70-79
D : poor ~60-69
F - unsatisfactory
~0-59
Tentative
Grade Components:
Quizzes & Homeworks 15%
Participation (includes attendance) 5%
Project & Presentation
15%
Programming Assignments
15%
Midterm Exam 25%
Final Exam 25%
Learning
Objectives:
By the end of this course, a
student should
1)
understand why this course is an important part of the CS
curriculum and what its value to them will be in their future
2)
be able to describe the important language evaluation
criteria
3)
be able to discuss the primary influences on language design
4)
be aware of the various categories of programming languages
5)
be able to evaluate the trade-offs in language design
6)
have developed an increased capacity to express programming
concepts
7)
have enhanced their understanding of languages already
known;
8)
have acquired a better ability to choose languages
appropriate to particular tasks
9)
have written
programs in at least three languages not known to them before the course
10) have developed the ability to learn new
languages easily
11) have a feel for what features they would want
to include in a language they design
12) have some understanding in what is involved
in implementing features of a programming language
13) be familiar with the common control
structures found in programming languages
14) understand the difference between static and
dynamic scope rules
15) be able to describe the elements common to
programming languages
Class Web
Site: https://users.cs.jmu.edu/adamses/web
I tend to put Word and PowerPoint documents up for you to
download from the Website. I also tend
to communicate with you this way. If a
student asks for clarification on an assignment, or points out something that
needs correction, I will post a dated message.
If there is a change in schedule or assignment, it will be there
too.
Course Components:
Lectures:
Some of the lectures will
correspond to the material in the book.
Others may be on material not in the text. These lectures may be
presented from slides or from notes.
You will get much more out of the course if you read the assigned chapters
and study the code in those chapters before coming to lecture. If you do this, you will frequently find
that the lecture clears up things about which you were confused. You are encouraged to ask questions in class
and lab and to see me during office hours
(or whenever my door is open) if you need more attention than you can be
given in class or lab. Some lectures will be language specific and may refer to
programming languages covered in the text while others may not. You are
responsible for the material assigned whether or not it is covered in lecture. You are responsible for all material covered
in class whether it is in the text or not and whether you are in class or
not..
Class Participation:
Class participation is strongly
encouraged. Attendance and class
participation can help an 89 turn into an A and make the difference between a
B+ and an A- or even between a C+ and a B-.
Exams:
There will be a midterm and a final. You must
take the final to pass the course regardless of your average at the time.
Quizzes:
Regular quizzes will
be given. NO makeup quizzes will be given.
No individual quiz score can destroy your quiz grade. It is the sum of all your quiz
scores that is important. Everyone has
an off day. Every class has at least
one student who knows the answers to all of the quiz questions. My method of curving on Quizzes and Homework
works as follows. I find the sum of
each student's quiz grades. I determine
who has the 3rd highest quiz score.
Everyone else's quiz grade is divided by that scored. For example: I ask 300 points worth of quiz questions during the
semester. The top student in the class
earns 299 points. The 2nd
highest quiz total is 275 points and the 3rd highest quiz total is
269. The top three scores earn the
entire 15 points. Each of the other students earns a fraction of
the 15 points computed by dividing their total by the third highest score.
Homework:
Homework will be assigned regularly which, unless otherwise
specified, is due at the next class meeting.
Each problem must be done on
a separate page to facilitate selective collection and grading. Late homework will not be accepted. Part
credit for problems partially completed will be given. Assignments are due at the beginning of the
class for which they are assigned. They should be placed on my desk at the
beginning of class. If you must
miss a class, arrange to get your homework turned in early or mail it in. Homework is always to be submitted in a folder with your name, this course, my
name and this semester in computer printed form CLEARLY VISIBLE on the outside
(use a 20pt font).
Programs not submitted on time
will incur a late penalty of 10 points per day including weekends. Programs will not be accepted late. Programs
must always be
submitted in a folder with your name, this course, my name and this semester in
computer printed form CLEARLY VISIBLE
on the outside (use a 20pt font).
Professor/Course
Policies:
Policy on
Incompletes:
Incompletes are not usual.
They are never automatic. They
will be considered only when circumstances beyond your control prevent timely
completion of the course. You can not
be granted an incomplete unless you are passing the course at the time you
request the incomplete.
Attendance Policy:
I expect you to attend every class and be prompt. If you are late,
please enter quietly so as not to disrupt the class. I would rather you come
late than miss an entire class. If you
have to miss class, it is YOUR responsibility to get any material you may have
missed from another student in the class.
If you tell a friend in advance, they can take notes for you.. If you must miss a class, please let me know
via e-mail before the class or as soon afterwards as is possible.
Written Work Policy:
All work done and turned in for
grading must be computer generated and printed! This includes charts, pictures,
drawings, as well as text. DO NOT turn in work that is hand written unless I
specifically announce that it is okay.
It must have your name, course number, semester (Fall 2004) and date of submission in the upper
left corner of the first page, and multiple pages must be stapled together.
Email Policy:
When you write to me to ask a
question or make a comment, please use your own school account whenever
possible and make sure that your mailbox has room for me to respond to
you. If you use another account, make
sure you identify yourself as I will
not to open mail if I can't identify the sender. I read e-mail regularly and respond to each
and every message.
The Honor System:
I uphold the JMU Honor Code.
Unauthorized collaboration will be punished as will other violations of the JMU
Honor System. Some violations to be aware of:
You are all here to learn, not
only from me, but also from each other. I encourage you to work together
towards solutions and to share your knowledge with your classmates. A number of assignments (such as the
projects) will be group assignments.
Others will be individual assignments (programs, homework, quizzes and
tests). I expect that you UNDERSTAND anything that you turn in to me. If
you do not at least know what’s going on in the code, do NOT take credit for
it. Please note that signing a roll for another student is considered cheating
and will result in a minimum one-semester suspension from the university.
Grades:
Grades will be clearly indicated
on graded work when it is returned to you.
It is your responsibility to keep all graded work until the end of the
semester in case you wish to dispute your grade. Grades will be posted on
the class web page using your assigned ID which will most likely be digits 6-9
of your People Soft number.
Missing Tests / Exams: -
Don't! If there is an unavoidable reason for you to miss a test, you
must inform me in advance and it may be possible for you to make it up.
If you miss a test and inform me afterwards, then, depending on the reason, you
may be allowed to make it up (with a 25 point penalty). If you miss the final exam, you are out of
luck and will not pass the course (i.e. you will earn a grade of F) regardless
of your average at that point.
Final Grades:
Final grades will be available as
soon as I have finished grading all work for the course and submitted the
grades. Final grades may only be
changed if there is a clerical error in the computation or recording of your
grade. Please have all of your graded work in your possession when you come to
see me if you believe an error has been made.
Extra Credit:
There will be no extra
credit. Do the best job you possibly
can on work and readings assigned. If
you do not have time to fully complete assignments, you won't have time for
extra credit.
Crisis:
If you get seriously ill or have
some family crisis that causes you to miss a deadline, please get in touch with
me as soon as possible. I will work
with you to help you complete the course.
Advice:
·
LEARN!!! Listen with an open mind. Be skeptical of ideas
presented. Do assignments with enthusiasm. The assignments are to aid in your
learning, not because I feel you need something to do. College has many
purposes: to get you a job, to prove to the world that you can solve problems
well, and to educate you. Learning need
not be a chore. For whatever reason you’re here, realize that I am here to help
you learn. I can't however, learn for
you. You must do it for yourself.
·
PREPARE and REVIEW!!!
Prepare for class and review afterwards. Doing the assigned readings
before lecture helps greatly in understanding the material as it is presented.
Review the lecture material (and your notes) after lecture (the next day
perhaps) to make sure that it all still makes sense. Plan to spend at least 2-3
hours of time outside of class for every hour in class
·
BE AWARE!!! Know
what the course policies are and carefully study the grading scheme for the
course. You can see that you will be
submitting a lot of work to me. It is
important to understand that it is the totality of your work that will
determine your grade. no one quiz can seriously affect your grade. You should retain all graded work that is
returned to you so that you can study from it and learn from your
mistakes. in addition, should you
believe that your grade has been mis-calculated, the graded work will provide
the basis for re-evaluation.
·
ENJOY!!! Computer
science is fun. It is a fascinating
major and one which you will find challenging and rewarding. It’s not easy but it can be exciting and
exhilarating. Everything takes longer
than expected so to keep it fun, keep up to date. This course may be one of the most useful courses you will take
in terms of your future in the field.