CS512 Winter 2007
Syllabus
|
Instructor:
Dr.
J. Michael Meehan Catalog Description
Programming Language Pragmatics 2nd edition, Michael L. Scott, Morgan Kaufman publishers, 2006
512 DESIGN AND IMPLEMENTATION OF COMPUTER PROGRAMMING LANGUAGES (4) Prereq: graduate status or acceptance to undergraduate honors program in computer science*. Evaluation of programming language features, classification of programming languages in terms of expressiveness, complexity, uniformity and orthogonality. Cost of implementing and using programming language in view of compilation and run-time environments. Mapping of programming language features onto computer architectures. Alternative programming methodologies: functional paradigm, imperative programming, logic programming, data flow programming, explicit and implicit concurrency models. * You should also have have a course in automata theory. Course Objectives
Topic Level Syllabus (Don't take the lecture hour estimates too literally) The number of lecture hours assigned to each group of topics is a rough guess. Each class is unique and is composed of a group of students with their own backgrounds strengths and weaknesses. Each class asks questions about different things and I let the interest and curiosity and needs of each class to some extent determine how long we dwell on any given topic. This is an immense field within the field of computer science. This topic requires a lifetime of intensive study. There is more depth at every turn than can be accommodated in a single course. The textbook does a very good job balancing depth and breadth. If the class demonstrates a desire for more depth of a given topic than provided by the text I will accommodate within the overall time constraints of the course. The text is 875 pages. The second edition actually cut quite a lot of material from the printed text and placed in on the accompanying CD. You will be responsible for both the material in the printed text and the accompanying CD. In addition, there is a significant amount of material I will present in class that is NOT in the text or on the CD. You are responsible for all material presented in class.
I will discuss with the class alternative paradigms for evaluation and reach a consensus as to how we will proceed. The alternatives revolve around whether we have in-class or take-home examinations and whether we have programming assignments and to what degree the grade is based on tests versus other evaluations. What is non-negotiable is that there will be at least a project, a midterm, and a final exam and that no other single component can count more than the final exam. In addition, we can suppliment the midterm and final exams with other small exams to be taken on-line if needed. Your grade will be determined based on the following percentages.
NOTE: I reserve the right to revise these percentages at any time during the term. A final raw score value for the course for each student will be determined using the percentages above. The grade distribution will then be analyzed and a final determination of a letter grade will be made based upon the student's position within the distribution. The raw score numbers have no meaning in relation to a letter grade using the traditional scales of 90-100, 80-90, etc. The only way to approximate your eventual letter grade outcome for the course is to analyze your position in the distribution after each raw score has been achieved. For this reason, I will post the distribution of the grades on the course web pages for each graded component..
Submitting Your Work There is a Linux machine in my office called django.cs.wwu.edu. This is my personal office computer that I use for all my office activities. I give accounts to all students in my classes for this machine. If you do not have an account on it already you should send me an email requesting an account. These accounts are tied to the departments Kerberos authentication system which is used to authenticate you to all *nix and M$ systems in the CS department. You need to simply tell me what your standard login id is and I will activate an account for you on my machine. Your password is whatever it is on the department servers. There is a Apache web server running on django. The URL of the form http://django.cs.wwu,.edu/~login-id will point to a directory named html under your home directory on django (note you don't include the html directory in the URL). This is where you should build your web documents for your project and where you will submit all assignments. Be sure to give the html directory and everything in it permissions that enable everyone to read those files or others won't be able to see your webs. A command like chmod -R o+r will do it for the files. For any directories remember to give x permission. If you are not up on your *nix skills (shame on you, fix that) do a man chmod command and read what it says or come see me and I'll help you. To turn in programs or take-home exams simple place them on django in Courses/cs512/xxx where xxx is midterm, final, prog1 etc. I will access your work there and grade it. In addition, I use django to make certain software available to you that may not have been installed in the labs in time for the course. For example, I have compilers and interpreters on django for all sorts of programming languages. It is possible that I may have a compiler on django for the language you need for your project. Please remember that django is my office computer that I use to read my email, write papers, etc. Feel free to use it but don't clog it up with huge amounts of work while I am trying to use it. If you need to use django for a long running job please use a “nice value” on your job. Django can be accessed in a number of different ways. You can use VNC viewer to access django.cs.wwu.edu:0 (that's a zero not an Oh) This will give you a complete desktop of your choice (kde, gnome etc.) You can also log into django using ssh. You can copy files to and from django using scp. From django you can mount your files from the CS student file server if you wish (one way is using smb4k, there are others). You should also be able to mount your home directory on django from other machines in the CS department assuming the machine you are using is configured to allow this. OK here is the legal mumbo jumbo that has to be said so we can nail you butt to the barn if we have to. There is an official departmental policy regarding cheating. It is posted on the wall by CS Department Office. READ IT. If you are found to have been cheating, you will receive a grade of F for the entire course not just the assignment in question. This is for real, no discussion, no second chance, do not pass go, do not collect $200. What constitutes cheating on a programming assignment? You can discuss the programming assignments with each other, in fact we encourage you to do so. You can even talk to each other about how you plan to solve the problem at the design level. When it comes time to write the code to implement the program, it had better be 100% your own code. Using code from someone else's program constitutes cheating. Ridiculous attempts at disguising purloined code will be detected and will only serve to guarantee to invoke the wrath of the teacher. We've seen it all before, so don't bother. We have programs which analyze the submitted program files and rank similarities. These programs are quite good. They understand the grammar of the programming language and are not just text based comparisons. Thus, variable name substitutions etc. will not disguise reused code. If you use code from a book or other source for a sort routine or some other supporting type of code you MUST give attribution in a comment prior to the code as to the source just as you would give attribution to a quote in a paper. Other texts you may find helpful. Concepts of Programming Languages, 7th ed. Robert W. Sebesta ISBN 0-321-33025-0
|