CSIS 4244 - Programming Language Concepts
Programming Language Pragmatics, Third Edition. by Michael Scott, © 2009 Morgan Kaufmann, ISBN-10: 0-08-092299-6
(This textbook is available with some Safari Books Online subscriptions, such as the one included with IEEE Computer Society membership.)
This course covers concepts related to the design and use of contemporary programming languages. Topics include syntax, semantics, control and data issues, and translation. Also presented are several programming paradigms including imperative, functional, object oriented, and concurrent.
The primary objectives of this course include
1. Learning the fundamental principles, theories, and concepts of programming languages.
2. Learning to apply the principles, theories, and concepts to analyze and solve problems.
3. Acquiring an interest in learning more by asking questions and seeking answers
To achieve these objectives, this course will introduce the fundamental concepts underlying the design and use of programming languages. Upon completion of the course, students should be knowledgeable in the following:
- Syntax and grammars
- Informal and formal semantics
- Aspects of control structures
- Aspects of data
- Issues related to security
- Use of various programming paradigms, including imperative, functional, object oriented, and concurrency
The format of this course will include a
combination of lectures, readings, labs, and homework exercises.
The format of this course will include a combination of lectures, readings, labs, and homework exercises.
Lectures will present concepts related to
programming language concepts. Readings will accompany material covered in class
and should be used in conjunction with class meetings and assignments.
Lectures will present concepts related to programming language concepts. Readings will accompany material covered in class and should be used in conjunction with class meetings and assignments.
Lab sessions will provide a guided introduction
to using several new programming languages. Homework exercises will provide
practice with the concepts presented in class and additional experience with new
Lab sessions will provide a guided introduction to using several new programming languages. Homework exercises will provide practice with the concepts presented in class and additional experience with new programming languages.
There will be approximately ten graded assignments categorized as follows:
Written assignments related to the course topics.
Written assignments related to the course topics.
This course is graded somewhat on a "curve" which cannot be completely determined until the end of the semester. But the "curve" will never be higher than A- : 90%, B- : 80%, C- : 70%, D- : 60%. If everyone does A work, everyone will get an A.
The assignments are important. Much learning occurs by solving problems
and writing programs. To qualify for a C or better you must satisfactorily
complete sufficient materials to earn a C in the assignments component.
Written assignments are due in class on the date indicated. Programming assignments are due at midnight on the posted deadline date. Programming assignments will be submitted electronically.
Late assignments will be accepted if turned in within one week of the due date, but will be subject to a penalty of up to 25%. Late assignments will not be accepted more than one week after the due date. Programming assignments may involve online submissions.
The exams are important. For example, getting an A average on assignments but a B average on the exams can result in a B in the course. By spending enough time on the assignments anyone should be able to do well on them, but scoring well on the exams shows real understanding. Each exam will cover approximately a third of the course material. Make-ups are generally not given unless extreme circumstances occur.
Final course grades will be based on the following:
Three exams @ 20%
The expected levels for achieving the major letter grades in this course are
A- : 90%, B- : 80%, C- : 70%, D- : 60%.
Grades may be "curved" at the discretion of the instructor. The final curve will be determined at the end of the semester and will never be higher than that shown above. If everyone does A work, everyone will get an A grade.
(The above reflects the major grade divisions only. The College's +/- grading scheme will be used within this and will be determined by the actual distribution of total points earned.)
The college Academic Honesty Policy and Procedures will be followed. As stated in these guidelines
The College makes two primary demands of its students and staff: 1) that each individual exercise the utmost care in planning and preparing the work presented for academic consideration, and 2) that members of the academic community conscientiously ensure the validity and protect the integrity of academic work and the grades earned for such work.
Academic dishonesty is a serious violation of academic policy and the Campus Conduct Code, and is punishable by severe sanctions including suspension and expulsion. The range of sanctions imposed is contingent on several factory, including the decision of the faculty member making the charge, whether it is the student’s first or a repeat offense, and the extent and nature of the offense.
You are encouraged to discuss homework and programming problems with each other. But unless a project is specifically designated to be done in groups, it is expected that the final results produced will be your own. In particular, copying source code files on programming assignments is considered plagiarism.
Attendance at all class sessions is expected. Students are responsible for all material covered or assigned in class.