CS-430/530 Programming
Languages
Fall 2006 Semester
© 2006 Elizabeth Adams
Professor:
Dr. Elizabeth Adams Office: 213 ISAT/CS
Phone: 540-568-1667
e_mail: adamses@jmu.edu
Office Hours:
Mondays: by appointment OR when my door is open
Tuesdays:
Wednesdays:
Thursdays:
Fridays: by appointment OR
when my door is open
Class
Meeting Times:
Section 0001 Tuesday,Thursday
-
Section 0002 Tuesday,Thursday
–
Final Exam for both
sections:
Important
Information about deadlines
The deadline for adding:
Fall Semester or First Block classes on
e-campus without instructor and academic unit head signatures is
Second Block classes is
Instructor and academic unit head signatures are required to add
Fall Semester 2006 or First Block classes between Wednesday, September 6, 2006 and Thursday, September 14, 2006.
Second Block classes between
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 6th and September 14th, at the Registration Services counter in Warren Hall.
The last day to drop a Fall Semester or First Block class
without a “W” grade is
The last day to drop a second eight-week class without a “W”
grade is
Deadline for withdrawing with a W grade or changing course credit options:
Fall
Semester:
First
Block
Second
Block
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, 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 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 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.