CSC-350 Programming Languages
Spring 2012
| Instructor:
| Roger Shore
| Class Schedule:
|
| Office Location:
| Congdon Hall 150
| MWF 1:25-2:30PM CSC-1720
|
| Telephone:
| 841-9031
| MWF 2:40-3:45PM CSC-3360
|
| Office Hours:
| MWF 9-11:00AM
| TTh 8:00-9:30AM CSC-2210
|
|
|
| TTh 11:30-1:10PM CSC-4210
|
|
| Others by appointment
| Th 3:10-4:40PM COM-3881 3/1/12 - 4/19/12
|
| E-Mail: rshore@linus.highpoint.edu |
Web site: linus.highpoint.edu/~rshore |
Course Description: A study of
the various programming languages. This will include languages
currently being used in conjunction with the Internet. Some
emphasis will be placed on the run-time behavior, lexical analysis and parsing
of a language. Students will participate in programming assignments involving
the use of several languages.
Prerequisites: CSC-262 Advanced Programming
Course Materials:
- Robert W. Sebesta, Concepts of Programming Languages, 9th ed. Addison Wesley
- An account on linus.
Course Objectives:
- To provide an overview of the key paradigms used in
developing modern programming languages.
- To highlight several languages, which provide those
features, in sufficient detail to permit programs to be written in each
language demonstrating those features.
- To explore the implementation of each language in
sufficient detail to provide the programmer an understanding of the
relationship between a source program and its execution behavior.
- To provide sufficient formal theory to show where
programming language design fits within the general computer science research agenda.
- o provide a sufficient set of problems and alternative
references to allow students the opportunity to extend their knowledge of this
important topic.
Class Approach and Methods:
IT IS ASSUMED THAT YOU WILL READ THE ASSIGNED CHAPTERS. Although the
material may be summarized, lectures will be used mainly to further
demonstrate various aspects of languages and to answer specific questions.
The writing of 8-12 programs/assignments will dominate your activities outside
the class during this course. You will use a top-down design with step-wise
refinement. You should use pseudo-code or flowcharts to describe each level
of refinement.
- STYLE 30%
- Indenting and layout. Is the program readable? Does indenting help debugging
and reading? Are parts of the program clearly labeled?
- Identifiers. Are the identifiers meaningful and mnemonic? Do they describe
their purpose?
- Documentation/Comments. Is the program reasonably commented? Does the
commenting help both the programmer and the grader? Could another student
in the class figure the program out?
- Attractive output?
- PROGRAM 70%
- Algorithm. Is the program sensible? Does it solve the problem in a
reasonable manner?
- Modularity. Does the program take advantage of subroutines and functions?
Are its separate parts easy to isolate for testing and debugging?
- Working. Does the program work? Does it fulfill the problem description,
or does it solve some other problem? Is it written in a way that it lets
shortcomings be recognized and fixed?
- Use of required commands?
- Late Penalty:Programming assignments will have due dates. You will automatically get an extension of 7 days if you miss the due date. The penalty will be 1 point per day late. No program will be accepted after 7 days of the assigned due date.
Course Policy:
- Attendance: Attendance will be taken daily at the beginning of class. You are expected to be present in every class meeting. If absent from class, you are responsible for all lectures, in-class exercises, assignments, and handouts. Caution: Being absent from class does not change the due date of assignments.
- Grades: Your final grade will be determined as follows:
| Component |
10-12 Programming Assignments/problem sets/quizzes |
3 Major Tests |
Cumulative Final Exam |
Total |
| Weight |
35% |
45% |
20% |
100% |
| Range |
93-100 |
90-93 |
87-90 |
83-87 |
80-83 |
77-80 |
73-77 |
70-73 |
67-70 |
63-67 |
60-63 |
0-60 |
| Grade |
A |
A- |
B+ |
B |
B- |
C+ |
C |
C- |
D+ |
D |
D- |
F |
You must score at least the minimum of a category to be given the associated grade, i.e. an average of 80 is a B- not a C+.
- Make-Up test will not be given. No make-up test will be given unless arrangements have been made prior to the day of the test. If you miss a test your final grade will be used in place of the missed grade. This means the percentage of the final exam will increase. If you miss the final exam, you will receive an F for the course.
- In-class worksheets, quizzes, and non-programming assignments must be completed on the assigned date and cannot be made-up.
- Homework: This will be assigned frequently. Some assignments will take minutes to complete others will take days. Opportunity for homework questions is given at the beginning of each class. Homework may be collected and graded occasionally.
- Cheating Policy: Don't Cheat! There will be no second chances. If you are caught cheating, you will receive an F for that test, assignment, program.
- Classroom etiquette:
- Cell phone usage during class is prohibited. Turn off cell phones (or place on vibrate). Please do not interrupt any aspect of the class due to your cell phone. This includes text messaging, picture messaging, etc.
- Do not listen to your ipod, cd player, etc. during class (even if we are in the computer lab).
- Profanity will not be tolerated. This includes lewd remarks printed on your clothing.
- Hats are not to be worn during class.
- Laptops are allowed in the class and can only be used for class related stuff. Since I cannot see you screen, you will be called out if I suspect otherwise.
- Lab etiquette:
- The lab was created with student input. Please help respect and maintain the lab.
- Do not eat while sitting at a workstation. If you must eat while in the lab, sit a the larger table where no equipment may be damaged except your own. Clean up the area after you finish eating.
- Clean up your area before you leave the lab. Unless you are planning to return in a few minutes, please take all books, paper, etc with you.
- DO NOT lock your workstation when you leave!
Course Topics:
- Why Study Programming Languages
- History
- Attributes
- Environment
- Evolution of Languages
- Syntax and Semantics
- BNF Grammars
- Context-Free Grammers
-
- Lexical and Syntax Analysis
- FSA's
- Pushdown Automata
- recursive-descent parsers
- Chapters 5-9: Constructs of Languages
- Names, Bindings and Scopes
- Data types
- Expressions and Assignments Statements
- Sequence Control: Implicit and Explicit
- Subprograms and Parameters
- Other topics:
- Recursive
- Object-Oriented Programming
- Concurrency
- Exception Handling and Event Handling
- Functional Programming Languages
- Logic Programming Languages
Languages
- Procedural
- C
- Fortran
- Pascal
- Object-Based
- C++
- Ada
- Smalltalk
- Java
- Functional
- LISP
- ML
- Logic Programming
- Prolog
- Scripting
- Perl
- python
- php