Reminders

Test 1 on Friday, February 16, 2018 in class.

Test 2 on Wednesday, March 14, 2018 in class.

Test 3 on Wednesday, April 18, 2018 in class.

Final Exam on Thursday, April 26, 2018, 2pm -5pm.

Syllabus

Course Synopsis

This course provides an introduction to the principles of programming language design, and programming in multiple paradigms, including functional programming, logic programming and object-oriented programming. We will discuss the design issues, syntax and semantics, and implementation of various programming language features, including control structures, abstract data types and facilities for parallel programming.

Required Texts
  1. Programming Languages: Principles and Practices, 3rd edition, by Louden and Lambert.
Prerequisites

CPSC 250. Familiarity with C++ and Unix/Linux is assumed.

Intended Learning Outcomes

By the end of the course, successful students will have the following abilities:

  1. Students will understand, and be able to program in, the programming paradigms of functional programming, logic programming and object-oriented programming.
  2. Students will understand the various issues that need to be considered in the design of a programming language.
  3. Students will be able to choose an appropriate programming paradigm and programming language suitable for solving a given problem.

Mechanics

The course will meet in class for three hours during the week. There will be three tests (on Friday, February 16, Wednesday, March 14 and Wednesday, April 18) in class during the semester. The final exam is scheduled for Thursday, April 26, 2:00pm - 5:00pm.

Make-up tests will be available by pre-arrangement only in case of scheduling conflicts. After the test, make-ups will be available only in case of documented medical emergencies.

Besides the exams, there will be regular homework assignments and quizzes in class, and a co-curricular requirement. Some of the homework assignments will be programming projects. All the programming projects must be completed in an environment compatible with the Linux installation in the lab computers, and not dependent on any integrated development environments such as eclipse.

Home works: Home works will be assigned on a regular basis and posted at the course website. All home works are due at the beginning of class on the posted due date. Late home works will not be accepted.

Quizzes: There will be short quizzes in class. These will be announced at least one class period in advance. There will be no make-ups for missed quizzes.

This course expects you to spend at least 12 hours of work each week inside and outside of class.

Co-curricular Requirement: The Mathematics, Computer Science and Physics department offers a series of discussions that appeal to a broad range of interests related to these fields of study. These co-curricular sessions will engage the community to think about ongoing research, novel applications and other issues that face these disciplines. Each student is required to attend at least three of these sessions, and turn in a short paper describing the contents of the session, and his/her critical reflections about the topic and content. These papers are due in class within a week of the session. A paper submitted beyond a week from the event being discussed in the paper will not be accepted.

Grading

The final grade will be computed based on the grades in the tests, the final exam, home works, quizzes, and the co-curricular component according to the following weights.

Component Weight
Co-curricular4%
Home works30%
Quizzes15%
Tests (3)30% (10% each)
Final Exam21%

The final course grade will be calculated as follows:

< 60 60-62 63-65 66-69 70-72 73-75 76-79 80-82 83-85 86-89 90-92 > 92
F D- D D+ C- C C+ B- B B+ A- A

Class Attendance and Policies

Regular attendance in class and the lab sessions is highly recommended. Regardless of attendance, students are responsible for all material covered or assigned in class.

Cell phones should be kept in your backpacks or pockets (essentially, out of sight), and turned to the silent mode throughout the duration of the class and lab periods. Please do not remove your cell phones until you are outside the classroom/lab. Similarly, during office consultations or consultations in the lab (even when it is not during regular class or lab time), your cell phones should be out of sight and in the silent mode.

If you use an electronic device such as a tablet or a laptop for note-taking or to read the textbook, the content that is open on the screen should be strictly restricted to documents and pages of relevance to the class. For example, you should not have any social media websites open in your browser window, even if it is in a tab that is not currently in focus.

Academic Integrity

Students are expected to adhere to the Academic Integrity policies of Roanoke College. All work submitted for a grade is to be strictly the work of the student unless otherwise specified by the instructor. The policies as outlined in the Academic Integrity handbook will be enforced in the course.

Graded programs are subject to the Roanoke College Academic Integrity policies. Copying a program or a portion of a program (even a single line) or reading another person's program to obtain ideas for solving a problem is plagiarism. Other examples of integrity violation include writing code for some else, using code written by someone else, telling someone else how to solve a problem or having someone tell you how to solve a problem (and using their method). These cases apply to any work that is handed in for a grade under the instructor's assumption that the work is your own. Unless specified otherwise by the instructor, discussion among students should be limited to general discussion of concepts and language details, not specific aspects of a solution to the assigned problem.