Course Description: This course is split up into two parts. In the first half of the course we will study the theoretical foundations for designing and implementing modern programming languages. This includes the syntax, type systems, semantics, and memory structures required to create a programming language. The second half of the course we will examine the features found in many different languages and will cover the different programming paradigms of imperative, functional, logical, and web-based languages. Upon conclusion of the course the student should feel comfortable programming in many different languages, feel comfortable learning a new language, and understand the key features of the major programming paradigms.
Upon completion of the course students will be able to:
Homework Assignments: Due by Blackboard submission by the date posted. Approximately six homework assignments will be assigned. Late homeworks will be penalized 10% per day late up until the date solutions are posted. Unless otherwise indicated, programming assignments and written assignments must represent your own work. It is permissible to discuss the assignments with other students, but do not copy code.
Questions: If you have any questions, feel free to come in to my office. In general, I have an open door policy -- if I am available in my office, you are welcome to come by. An even better way to reach me is through email. I check my email frequently and you should receive a response quickly. Email is preferred over telephone and you will probably receive a faster response since I don't check voicemail very frequently.
Grading: Letter grade. There will be two exams, a midterm and a final exam. The midterm will primarily cover the theory material and the final will primarily cover the different programming language paradigms. Unless prior arrangements are made no make-up exams will be given. Since you will be tested upon your critical thinking and problem solving skills and not your ability to memorize formula, the exams will be open book (any written material and a calculator is acceptable to bring to the test). Cheating on assignments and exams is not acceptable. Written homework and programming projects are individual assignments and it is expected that each student does his own work.
Homeworks: 40% (Each homework is worth an equal amount)
The grade scale is shown in the table below. The grading curve may be lowered if necessary but it will not be raised. This means that if you received an 89% then you will at least get a B+, but may receive a higher grade based on the curve. (Final grades don't include a + or -).
An incomplete grade will only be given for a valid excuse (e.g. medical, death in the family). An incomplete grade does not let you take the class over again, your final grade will be assigned based on work submitted in class and work that remains to be submitted.
Cheating: Students are expected to uphold the UAA standard of conduct relating to academic dishonesty outlined in the UAA catalog and student handbook. Cheating is not tolerated and constitutes grounds for dismissal. For this class, it is permissible and encouraged to assist classmates in general discussions of how to attack the homework problems. It is not permissible to copy another's work (or portions of it) and represent it as your own.
UAA Suicide Prevention and Care Team: The UAA community is committed to and cares about all students. If you or someone you know at UAA feels overwhelmed, hopeless, depressed, and/or is thinking about dying by suicide, supportive services are available and effective. For immediate help contact the Alaska Careline: 877-266-4357. More information and local resources are located at www.uaa.alaska.edu/ispi. Furthermore, if a student is exhibiting inappropriate, unusual, and/or concerning behavior you can report it to the Care Team at https://www.uaa.alaska.edu/careteam/submitting-care-report.cfm. There will also be Title IX training required for all students. All staff and faculty have been asked to attend training.