CS-430/530 Programming
Languages
Fall 2005 Semester
© 2005 Elizabeth Adams
Professor:
Dr.
Elizabeth Adams 213
ISAT/CS
Phone:
540-568-1667
adamses@jmu.edu
Office Hours: Monday : by appointment or when my door is open
Tuesday
:
Wednesday:
Thursday:
Friday: by appointment or when my door is open
Class Meeting Times:
Section
0001 Tuesday,Thursday
-12:30-
Section
0002 Tuesday,Thursday
Final Exam for both sections:
Important Information about deadlines
The deadlines for adding fall semester classes on e-campus
are as follows:
Semester Class
First
eight-week class
Second eight-week class
The deadlines for adding classes with instructor and
academic unit head signatures are as follows:
Semester class
First eight-week class
Second eight-week class
Please be aware that giving a student an override into a full class does
not automatically enroll the student in class. The
student must register on e-campus or, if the add is made between September
5th and September 15th, at the Registration Services
counter in Warren Hall.
The last day to drop a fall semester or first eight-week
class without a W grade is
Final Exam Information
TBD
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 (2003) OR 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 $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. 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 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 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:
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 whats 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 youre 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.
Its 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.