CS-430/530 Programming Languages
Fall 2007 Semester
© 2007 Elizabeth Adams
Professor:
Dr. Elizabeth Adams Office: 213 ISAT/CS
Phone: 540-568-1667
e_mail: adamses@jmu.edu
Office Hours:
Mondays: 4:00-5:00 pm
Tuesdays: 10:30-11:30 am
Wednesdays: 1:30-3:00 pm
Thursdays: 10:30-11:30 am
Fridays: by appointment And
whenever my door is open
NOTE: I am frequently in my
office at other times, particularly in the evening and you are welcome whenever
I am there and my door is open
Class
Meeting Times:
CS 430 - Section 0001 Tuesday,Thursday - 12:30-1:45 – ISAT/CS 250
CS 430 - Section 0002 Tuesday,Thursday – 2:00-3:15 - ISAT/CS 250
CS 530 - Section 0001 Tuesday,Thursday – 2:00-3:15 - ISAT/CS 250
Final Exam for all sections: Tuesday, December 11th 7pm –
room ISAT/CS 136
Important
Information about deadlines
..\Fall_Semester_2007_Add-Drop_Dates.doc
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
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,
Seventh Edition (2005), Addison
Wesley,
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 $5. 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 BURKS comes 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 10%
Participation (includes attendance) 5%
Project & Presentation
15%
Programming Assignments
20%
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. I also communicate via e-mail
using Blackboard.
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, when assigned,
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.
Hard copy of 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 2006) 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
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:
1.
Sharing of computer account passwords for any reason.
2.
Allow another student to use your computer account
unsupervised.
3.
Giving or receiving help when we have asked you to
work alone.
4.
Sharing documents or parts thereof electronically.
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 Blackboard
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.