Syllabus Computer Science 810 Programming Languages: Advanced Concepts Wichita State University Fall 2002 Section: 05343 Prerequisite: CS 510, CS 720 Room: JB 128 Time: TTh 11:00am .. 12:15 beginning tue. Aug 22, through thur. Dec 12, excluding tue. Oct 22 and thur. Nov 28 Final exam: tue. Dec 17, 10:00am .. 11:50, JB 128 Course grades will be available from WSU by phone at 978-6500, by Dec. 30 (This date is tentative.) Call this number to check if WSU classes have been cancelled due to weather: 978-6633. Instructor: Dr. Rodney M. Bates Office: JB 210 Phone: 978-3922 Email: bates@cs.twsu.edu Office hours: TTh 1:00pm .. 2:30 The following WSU and Computer Science department policies are attached and incorporated by reference. You are responsible for reading and understanding them: - Make-up exam policy - Incomplete policy - Withdrawal policy - WSU and CS academic honesty policy - Disability Services notice - Department Unix usage policy - Handin program instructions - Some of these policies are also on line at: www.cs.twsu.edu/news/policies/honesty-policy.html www.cs.twsu.edu/news/policies/dept_policies.html www.cs.twsu.edu/~wallis/rules.html Prerequisites: CS 510 and 720 are prerequisites to this course. I insist that you at least have completed CS 510. Course goals: - Become skilled at detailed reading of programming language reference manuals. - Become familiar with programminl language complexity, economy of concept, and well-definedness. - Gain understanding of programming language support for Object Oriented programming, separate compilation, encapsulation, and concurrent programming. - Learn basic concepts of functional programming, higher-order functions, patterns, and type-inference. CS 810 Fall 2002 Syllabus page 2 Course Content: The first part of the course will be a comparative examination of Modula-3 and C++. The reference manuals of these languages are the main and most authorative source of information. This will focus on Major language features, language complexity, definedness, and safety, as they affect practical software development. The second part will introduce the functional language ML, which is quite different from the traditional imperative and object-oriented languages. We will examine basics of the language, patterns, higher-order functions, implicit polymorphism, and type inference. Texts: 1. Boszormenyi & Weich: "Programming in Modula-3, An Introduction to Programming with Style" 2. ISO/IEC 14882, "International Standard, Programming Languages, C++", pp 1 .. 309. 3. Ullman: "Elements of ML Programming" In addition, you may wish to consult one of more of the numerous C++ tutorial texts. Additional resources: http://www.cs.twsu.edu/~rodney/cs810.html http://www.m3.org http://www.m3.org/cm3 http://www.elegosoft.com/pm3/ http://www.elegosoft.com/pm3/ http://www.elegosoft.com/pm3/pkg/intro/src http://www.elegosoft.com/pm3/pkg/modula3/src/m3defn/m3.html http://www.elegosoft.com/pm3/pkg/m3build/src/ http://gatekeeper.dec.com/pub/DEC/SRC/research-reports/abstracts/src-rr-052.html http://gatekeeper.dec.com/pub/DEC/SRC/research-reports/abstracts/src-rr-113.html http://www.faqs.org/faqs/meta-lang-faq/ http://www.cis.ohio-state.edu/hypertext/faq/usenet/meta-lang-faq/faq.html http://www.cs.twsu.edu/~rodney/cs810.html Grading: Approx 50% Exams, 25% programs, 25% homework >= 90%=A, 80%=B, 70%=C, 60%=D There will be three in-class exams, including the final. The final will be comprehensive. These exams may be open-book. There may also be some unannounced short quizzes given in class. Late policy: Work received after the start of the next scheduled class following the due date will not be accepted. A zero will be recorded for the assignment and will reduce the overall grade accordingly. Work received after midnight on the due date but before the next class begins will have 50% of the possible points deducted. All out-of-class work must be handed in electronically, using the Handin program, unless specifically exempted in the assignment sheet. Instructions for using Handin are attached. You are responsible for testing that Handin is properly configured for your login account, prior to needing it. Also see the work standards below. CS 810 Fall 2002 Syllabus page 3 Academic honesty Students' helping each other can be legitimate, when it involves only helping each other to learn. However, if you hand in material that reflects knowledge or skills you do not have or work you have not done, that is fraudulent. All assignments you hand in for grading must be entirely your own work. If you knowingly assist someone else in producing fraudulent materials, you are guilty too. I will react to any incidents of cheating and decide on penalties case by case, according to my assessment of the facts. If I determine that cheating has occurred, the Computer Science policy will apply. Standards for work handed in Be sure your name and the assignment number are on every paper and in every file you hand in, electronically or otherwise. If I cannot directly identify a paper or file, I may treat it as not handed in. Files such as input files, whose format does not allow for any form of comments are excepted from this, if they are properly named and submitted under your login account and the correct assignment number, using Handin. Every assignment will have a unique assigment number, even those that do not use Handin. Hand in all the files called for on the assignment sheet and give them exactly the file names called for. In every source file, in addition to your name and the assignment number, give the name of the file and a brief explanation of what the file contains. These trivial matters, and possibly other specific instructions on the assignment sheet are worth some of the points on each assignment. Handling all the cases specified in a programming assignment, even those not tested, is part of the assignment. Read the assignment carefully and follow all the instructions therein. A reasonable degree of readability is also part of programming assignments. Give identifiers names that intuitively suggest their meaning in the program. I am tolerant of a wide variety of indentation styles, but if a major construct B is syntactically subordinate to A, then all of B's delimiters and subordinate constructs must be to the right of A's delimiters. Separate parts of the same major construct, e.g. THEN- and ELSE-clauses of an IF statement may begin at the same indentation or to the right. Delimiters which reasonably appear at the end of a line are excepted.