| Overview: |
Most novice computer programmers fall in love with their first programming language. Having acquired some semblance of mastery over the computer with their first language, they immediately wonder why anyone in their right mind would ever program using any other language. This quickly leads to flame wars with other novice programmers who have rallied behind their own first language. Particularly if the novice programmer is in love with a "hot" language, (such as Visual Basic or Java in the late '90s), they feel even more justified in their obsession, since the marketplace seems to be in complete agreement with them. The basic purpose of this course is to help you acquire a more mature attitude toward programming languages by learning about their history, the common concepts underlying all languages, and the inevitable trade-offs that arise in language design that preclude any language from ever being "best" for every application. Once upon a time, the "hot" language was Fortran, and those who knew it thought they'd never need to learn another language. Similarly, in a few years, Visual Basic and Java will most likely be dethroned. The sad fact of the matter is, if you intend to work in software development for any length of time, you're going to have to learn many more programming languages. This course is also intended to help you with this problem by teaching you concepts that will help you learn the next hot programming language more quickly and efficiently. In addition, you'll learn how to evaluate language capabilities and match them to the application. In some cases, believe it or not, it may be faster to learn a new language that is well suited to the problem than to try to program the solution in your "favorite" language. |
| Course Structure: |
This course is organized much differently from the 100 and 200 level ICS
courses. The goal of this organization is to minimize the occurrence of
things that are often boring, minimally productive, and/or lame (such as
classroom lectures) and maximize things that are useful and interesting
(such as one-on-one interaction with the instructors and/or other
students). This organization will also require a LOT more responsibility
from you, the student. If you don't keep up, you're going to fall behind.
The class is scheduled for MWF, 11:30-12:20, in Ocean 114. Since my lectures will all be online, I will not need this time for lecturing. Instead, I will use that time to talk with you about any questions or problems you are having. I will bring my PC and we can go over the lecture material, the module assignments, or anything else you need help with. If you are mastering the course material (and you should be able to determine that through the online assessment quizzes), and do not have any questions for me, then you will not need to come to class. The only required class sessions are for the three midterms and the final, as listed in the class schedule. The course format can be appropriately viewed as "distance ed", since you do not have to be physically present at UH Manoa in order to participate in the course. (I can use netmeeting for distance ed students.) However, the course is not designed to allow unlimited enrollment, because this would not allow the one-on-one interaction that makes the course more valuable than simply reading the textbook on one's own. For this semester, I hope to keep the course enrollment in the neighborhood of 60 students. If you are not at UH Manoa, you will have to contact me so I can set up proctoring for the three midterms and the final exam. I've structured the course into a sequential set of about 18 modules. The course schedule shows which module or modules you need to complete each week in order to finish the course. Each module has the following structure:
I will make each module available shortly before the week in which you need to work on it. |
| Prerequisites: | For you to succeed in this course, you will need about 10 hours a week to study. You will be much better off if you have your own computer with at least a 56K internet connection, although this is not required. |
| Grading: | The three midterms and the final are each worth 20% of your grade. The total of all of the online assessments is also worth 20% of your grade. After each midterm, I will post your current grade totals and a potential letter grade so you know where you stand. |
| Texts and other resources: |
The text for the course is: Concepts of Programming Languages, Fourth
Edition, by Robert Sebesta, Addison Wesley, 1999.
In addition, some modules will require you to use a programming environment such as Java, Lisp, or Prolog. More details about these environments will be available in the modules themselves. |
| Registration: | Classified graduate students or undergraduates at UH Manoa should use Pa'e to register. You will need to email uhmics@hawaii.edu to request an approval code. |
| http://www.ics.hawaii.edu/~johnson/313f99/ |