CSci 450-01: Organization of Programming Languages
CSci 503-01: Fundamental Concepts in Languages
Fall 2014 Syllabus
Locations
The Fall 2014 class meets in 106 Weir Hall at
9:00 a.m. to 9:50 a.m. on Mondays,
Wednesdays, and Fridays. (Because of
class size, CSci 503 may meet at a different time.)
The class is taught by Prof. Conrad
Cunningham, whose office is in 203 Weir
Hall. Prof. Cunningham's voice telephone number is (662)
915-5358 and fax number is (662) 915-5623. His WWW home page is
http://www.cs.olemiss.edu/~hcc/ and his email address is hcc
AT cs DOT olemiss DOT edu. The official office hours for this
class are 1:00 p.m. until 2:30 p.m. on
Mondays and Wednesdays and by appointment at other
times.
The WWW home page for this class is
http://www.cs.olemiss.edu/~hcc/csci450/.
The final examination for this class is scheduled for Wednesday, 10
December at 8:00 a.m.
Student Disabilities Services Statement
"It is the responsibility of any student with a disability who
requests a reasonable accommodation to contact the Office of
Disability Services (915-7128). Contact will then be made by that
office through the student to the instructor of this class. The
instructor will then be happy to work with the student so that a
reasonable accommodation of any disability can be made."
Course Descriptions from Catalog
CSci 450: Organization of Programming Languages: History and
concepts of programming languages; run-time behavior; formal aspects;
language definition; data types and structures; control; and data
flow, compilation and interpretation.
CSci 503: Fundamental Concepts in Languages: An intensive study of
the fundamental concepts of programming languages and the associated
software system structures. Computer science graduate students only.
-- Which course should I take?
CSci 450, Organization of Programming Languages, is a core
undergraduate course required for BSCS and BA students. Undergraduate
students should enroll in CSci 450 instead of CSci 503. CSci 503 is
restricted to graduate students.
CSci 503, Fundamental Concepts in Languages, is a transition
course designed for students with undergraduate degrees in related
fields who wish to study computer science at the graduate level but
who need to strengthen their backgrounds in programming language
paradigms and organization. Enrollment in this courses is limited to
computer science graduate students who have been admitted in
conditional, qualifying, or nondegree standing. Qualifying and
nondegree students must have the permission of both the Department and
the Graduate School to enroll. Credit for this course cannot be
applied to MS or PhD degrees in computer science.
Graduate students in other fields should not enroll in this
class. (We do not currently have the capacity to handle additional
students.)
Prerequisites
CSci 450: CSci 211 and 223 with minimum grades of C-
CSci 503: Computer Science graduate students only
Course Outcomes/Objectives (under development)
Upon successful completion of this course, students will be able to:
- understand the fundamental principles underlying various
programming language features
- understand and apply ideas from different programming paradigms
such as functional, imperative, modular, object-oriented, and
logic
- design and implement simple programming languages
Source Materials
- Programming language concepts
-
- William R. Cook, Anatomy of Programming Languages,
2013, online draft.
- Functional programming using Haskell
-
- Multiparadigm programming using Lua
-
- Roberto Ierusalimshcy. Programming in Lua, Third
Edition, Lua.org, Rio de Janiero, 2013 (covers Lua 5.2).
- Lua 5.1 (mostly used) or 5.2 can be downloaded from http://www.lua.org or various other
repositories.
- Logic programming using Prolog
-
- Patrick Blackburn, Johan Bos, and Kristina
Striegnitz. Learn Prolog Now, online tutorial (also in
print from College Publications, 2006).
- SWI Prolog, stable release 6.6.6, can be downloaded from http://www.swi-prolog.org/
or various other repositories.
Course Topics (under development)
- History of programming languages
- Programming paradigms
- Functional programming using Haskell
- Basic concepts of language design and implementation
- Dynamic imperative programming using Lua
- Modular programming
- Prototype-based object-oriented programming using Lua
- (insufficient time Fall 2014) Logic programming using Prolog
Professional Conduct
As a student in CSci 450/503, you are expected to conduct yourself
in a professional manner according to the Honor Code of the School of Engineering, the Information
Technology (IT) Appropriate Use Policy, the M Book, and any other
relevant policies.
Limited Collaboration Policy. Unless otherwise
indicated, any homework assignment or programming exercise given in
this class will be an individual assignment. The work you submit is
to reflect the knowledge, understanding, and skill that you have
attained as an individual. However, the instructor does want to
encourage the development of a community of scholars who are actively
engaged in discussion of the ideas related to this course. With this
in mind, you are allowed to discuss solutions of the homework and
programming problems with other students if done so according to the
following guidelines:
- You may discuss ideas for homework and
programming assignments with your classmates. However, you
cannot collaborate on writing the solution or the
program code. That is, you can talk about the problems and
ideas for solving them, but you cannot write things down with anyone
else. You are, of course, prohibited from copying or seeing another
student's written solution, and you are not allowed to show your work
to anyone else. Similarly, you are not allowed to copy text or
program code from a book or a page on the Web unless explicitly
authorized to do so by the instructor.
- You should accept help with care. If you work
too closely with another student, you might mislead yourself into
believing that you understand the concepts and techniques better than
you actually do. Don't forget that the instructor has office hours
and can probably give you hints or suggestions to get you started.
- You should give help with care. Do not help
anyone too much. When you have solved a problem, it is tempting to
just tell other students how you solved it. Instead, try to allow
them to come to the solution on their own. Maybe give them a hint to
help them get "over a hump." Remember that helping someone too much
will hurt them in the long term if they can't work through problems on
the exams by themselves. So avoid the temptation to do so. If you
can't help other students without giving away the whole solution,
direct them to see the instructor (who may or may not have a way to
"edge" them toward the solution).
- You are not obligated to help anyone. If you
feel uncomfortable helping another student for any reason, please
direct them to see the instructor.
- Except as described above, all work in this class is
covered by the School of Engineering's Honor Code statement on
plagiarism. It is plagiarism "to knowingly deceive, copy,
paraphrase, or otherwise misrepresent your work in a manner
inconsistent with professional conduct".
Grading
- The grading scale for this class is A [90..100], B [80..90), C
[70..80), D [60..70), and F [0..60). However, the instructor will use
the +/- grading scale, as appropriate, to provide more fine-grained
grading within these ranges.
- Two-thirds of the semester grade will come from the exam average
and one-third from the homework assignment average.
Assignments and Projects
- All students are expected to study the relevant portions of the
textbooks and handouts in conjunction with our class discussions (i.e.,
before coming to class). Explicit reading assignments will
not always be given. If in doubt on what you need to read, please ask
the instructor.
- Several programs will be assigned during the semester. We
will use two or more different languages. There may also be written
assignments or short quizzes.
- Unless otherwise stated in the assignment description, an
assignment is to be carried out by each individual student without
inappropriate collaboration with others. See the section on
Professional Conduct.
- In preparing and submitting homework assignments make sure that:
- your name, the course number or name, the assignment identifier,
and individual exercises are clearly indicated in the content of the
file or on the paper. (If it is a group assignment, give the group
identifier and the names of all members.)
- for any handwritten portions, you write legibly on only one side
of the paper in a black or blue pen or dark pencil. Do NOT use red or
green ink!
- your pages are stapled together in the upper left corner when
viewed from the front.
- All students are expected to complete their homework assignments
by their due dates. If an assignment is submitted late, a
penalty of 10 percent of that assignment's grade will
be assessed for each day it is late. A homework
paper will not be accepted after graded papers have been
returned, after a solution has been distributed, or after the final
examination.
Examinations
- There will be three mid-term examinations and a final exam.
- Original: All exams are equally weighted in the exam portion of
the final grade.
- Modification: The lowest grade of the three mid-term and one
final exam will be dropped and the other three grades will
contribute 20 percent toward the course grade. Each student must also
take a multiple choice assessment exam, which will contribute 6.67
percent of the final course grade.
- Tentatively, the mid-term examinations will be given in
mid-September, mid-October, and mid-November.
- The final examination will be given during the final examination
period published by the Registar's office. Please do not ask to take
the final examination earlier than the time set for the entire class.
- Each exam will cover all topics studied to that point. The final
exam is comprehensive over all material covered during the semester.
- Each exam may consist of a combination of in-class and take-home
components.
- If you cannot take an examination at the scheduled time because
of an illness or other special circumstances, please notify
Prof. Cunningham in advance. Without advance notification, it may not
be possible to give a make-up examination.
UP to CSci 450/503 root document?
Copyright © 2014, H. Conrad Cunningham
Last modified: Sat Jan 10 16:40:34 CST 2015