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: