course syllabus - Martine Ceberio

advertisement
Advanced Algorithms
CS3360 Spring 2012 – Syllabus
General information
Instructor:
Lecture:
Office:
Office hours:
E-mail:
Website:
TA:
Textbook (required):

Dr. Martine Ceberio
TR 1:30pm – 2:50pm, room CCS G.0208
CCS 3.0406
TR 10am – noon, or by appointment on TR (see http://meetwith.me/mceberio)
mceberio@utep.edu
http://www.martineceberio.fr/teaching
Aditi Barua, abarua@miners.utep.edu; office hours:
Robert W. Sebesta, Concepts of Programming Languages, 9th edition, Addison
Wesley
Course description.
In this course we will study concepts and examples of programming languages with the goal of acquiring the
tools necessary for critical evaluation and rapid mastery of programming languages and constructs.
The course attempts to balance theory and hands-on experience. We will survey the constructs and capabilities
typically found in modern programming languages with attention to design trade-offs and implementation
considerations. By gaining an understanding on the range of possibilities likely to be encountered in a language,
students will be prepared to learn new languages quickly throughout their careers. By understanding the
implications of design alternatives, students will be better able to anticipate the problems likely to arise in using
a new language.
Also, the presentation of design alternatives and trade-offs lays the groundwork for future advanced study of
compilers and programming language semantics. To instantiate the discussion of general programming
language characteristics, several languages will be presented in more detail: e.g., AspectJ (an aspect and
object-oriented language), Haskell (a functional language), Prolog (a logic-programming language), and PHP (a
Web scripting language). Students will gain practical experience with each programming paradigm by
completing a programming project in each of the chosen languages.
Outcomes:
Upon successful completion of this course, students will be able to:
• [Level 3: Synthesis and evaluation] Evaluate modern, representative programming languages critically
• [Level 3] Choose a suitable programming paradigm and language for a given problem or domain
• [Level 3] Design a small, domain-specific programming language, e.g., a test script language, by defining its
formal syntax and semantics
• [Level 2: Application and analysis] Define syntax of a small context-free grammar in BNF and EBNF
• [Level 2] Use attribute grammars to describe the static semantics of small programming languages
• [Level 2] Define dynamic semantics of small subsets of programming languages, e.g., control structures
• [Level 2] Select and apply appropriate expressions and control structures for a given programming task
• [Level 2] Analyze and evaluate data and control abstractions of programming languages
• [Level 1: Knowledge and comprehension] Recognize major programming languages
• [Level 1] Explain operational semantics, axiomatic semantics, and denotational semantics as methods of
expressing programming language semantics
• [Level 1] Explain design concepts, design alternatives and trade-offs, and implementation considerations for
scope, binding, data types, expressions, control structures, subprograms, abstract data types, objects,
concurrency structures, and exception handling in modern programming languages
 Assignments and Examinations.
Examinations.
There will be two mid-term exams and one final exam. The final exam will be comprehensive. The mid-term
exams will take place during the regular class session. The final exam will take place on the date specified by the
university.
There will be unannounced quizzes. No make-up will be given for missed quizzes. At the end of the semester,
the weakest quiz grade will be dropped.
Extra-credit: There will be some extra credit offered during the semester. There will be no extra credit given
after week 12.
Assignments.
There will be two kinds of assignments: homework assignments and programming projects. All assignments will
be handed out or announced in class. If you miss a class session, it is your responsibility to find out what you
missed. You should expect to spend about 3-4 hours per week on the homework assignments, and an average
of 3 hours per week on programming projects. Note, however, that each programming project is estimated to
require 8-10 hours, so your work load in weeks that projects are due may be higher (with other weeks being
correspondingly lower).
Homework assignments may ask to read the textbook and prepare for the coming week’s lectures. Exercises
that use material not yet discussed in lecture will be graded generously. For the homework assignments, no late
submission will be accepted unless arrangements have been made in advance or unless unusual circumstances
warrant an exception.
Programming projects are designed to allow you to gain hands-on experience with a specific language and
programming paradigm (e.g., AspectJ for object and aspect-oriented programming, Haskell for functional
programming, PHP for Web and procedural programming, and Prolog for logic programming). Late project
submissions will be accepted to some extent, but projects turned in late will be penalized 10% for each day or
partial day of lateness for up to five days. After five days, projects will not be accepted unless other
arrangements have been made in advance or unless unusual circumstances warrant an exception.
All homework assignments and programming projects are to be done individually. While you may discuss the
assignment in general terms with others, your solutions should be composed, designed, written and tested by
you alone. If you need help, consult the TA or the instructor.
Late work.
Any assignment turned in after the class in which it is due starts will be considered late. Quizzes (possibly
unannounced) will often be given at the beginning of the class period. There will be no extra time for students
who arrive late in class. Major assignments will be penalized by one letter grade per day that it is late (starting
the first day after the class starts). There will be no exception to this rule.
 Class participation.
Active participation is expected in this class. A total of 5% of your final grade are allocated to participation,
which will be graded based on:
 Attendance
 General attitude, including arriving and leaving on time


Your contribution to class discussions and exercises
Completion of assigned homework on time.
 Attendance.
Class attendance and participation is vital. Information will be shared in the class sessions that will help the
students work on their projects and succeed in their exams. Excessive absences will have an adverse effect on a
student's final grade. If you need to be absent, you are allowed to two personal days: the instructor needs to be
informed about your absence before it happens. More than two absences will be considered excessive and will
result in loss of participation points.
Classroom policies and conduct.
 You are expected to be on time. Do not come to class late or leave early as this unfairly disrupts your
classmates. Arriving late or leaving early will also have an adverse effect on your success in the class as
you are likely to miss quizzes (for which no make-up will be provided), miss important information that
you will be responsible to get back on your own. Their will be no repetition of courses for students who
arrive late or leave early.
 You are expected to spend the whole class period in class: please attend the rest room or any other
need before the class. Exceptions should be approved before the class period starts.
 You are expected to do your class work and come prepared to class. Homework and any assignments
will be due at the beginning of the class period. Failing to turn in assignments on time will result in
points off.

Grading.
Final grades will be based on the following:
Mid-term examinations
15% each
Comprehensive final*
20%
Quizzes and homework
22%
Programming projects
23%
Class participation
5%
* A grade of D or better is required at the final examination, regardless of the student's average: receiving an F
at the final examination will result in failing the course.
Determining grades.
Grading scale for examinations and course work:
A
88% to 100%
B
78% to 88%
C
68% to 78%
D
58% to 68%
F
below 58%
Standards of Conduct.
You are expected to conduct yourself in a professional and courteous manner, as prescribed by the UTEP
Standards of Conduct.
Graded work, e.g., homework and tests, is to be completed independently (unless specified differently) and
should be unmistakably your own work (or, in the case of group work, your team's work), although you may
discuss your project with other students in a general way. You may not represent as your own work material
that is transcribed or copied from another person, book, or any other source, e.g., a web page. Professors are
required to – and will – report academic dishonesty and any other violation of the Standards of Conduct to the
Dean of Students.
Disabilities.
If you feel that you may have a disability that requires accommodation, contact the Disabled Student Services
Office at 747-5184, go to Room 106E Union, or email dss@utep.edu.
I have read the syllabus and all rules it includes. I understand them all and commit to follow them.
NAME (print):
Date:
Signature:
Download