Lectures: Tuesdays and Thursdays - 1:35-2:50 pm - Doolan Hall 219
Instructor: Philip Dorin - Doolan 102 - (310) 338-2832 - philip.dorin@lmu.edu
Secretary: Jacqi Davis - Doolan 101 - (310) 338-7351 - JaDavis@lmu.edu
Labs Manager: Andres Buritica - Doolan 104 - (310) 338-8100 - andres.buritica@lmu.edu
Laboratory Assistants: Doolan 114 (aka the Keck Lab). The Keck Lab is open variously from eight to twelve hours per day. (By the second week of the semester) you will find a schedule posted on the door. If the lab is open, there will be a lab assistant on duty.
This is a course about algorithms:
what they are;
what they can, and can not, do;
how to construct correct ones;
how to express them in a modern-day computer programming language.
We will design algorithms for lots of numerical and non-numerical problems, and we will program many of them in JavaScript.
We will also have some things to say about the history of computing, computer architecture, translation vs. interpretation of programming languages, algorithm paradigms, sorting and searching, recursion, objects, program correctness, computational complexity and intractability.
This course is not, by itself, intended to be a comprehensive study of the JavaScript language- or, for that matter, website construction, style sheets, etc. Computer science majors- and some minors- should take the continuation course, CMSI 186, in the spring.
There are no formal prerequisites, but be prepared to deal with some relatively lightweight mathematics.
Toal and Dionisio. The JavaScript Programming Language. Jones and Bartlett, 2009.
Expect, roughly, a new homework assignment each week; a mid-term exam (Thursday, October 22); and a two-hour final exam (11 am, Thursday, December 17).
In evaluating the quality of your work, I will take into consideration your total course effort, including homework, midterm exam, and final exam, with emphasis on the exams.
Grades will be awarded as follows: for superior work, A; for good work, B; for satisfactory work, C; for poor work, D; for failing work, F. At the discretion of the instructor, these may be raised by a + or lowered by a -.
Regarding academic honesty and integrity, students are referred to the LMU Bulletin 2008-2010, specifically, the section dealing with the university's honor code and process.
You should try to work, as often as possible, in the Keck Lab. At any given moment it is equipped with around twenty-five (mostly, Mac and Linux-based) machines, and they all have the appropriate software installed. There are also numerous stations for using a laptop or netbook. Even more important: most computer science students, lab assistants, and professors tend to hang out there, easily making it the most programmer-friendly (and tech-savvy) lab on campus.
If you do plan to use your own computer, you already have all the software you need, namely, a browser (Firefox, Safari, Internet Explorer) and a text editor (e.g., Notepad, TextEdit, nano, Microsoft Word).
Kindly turn off the ringer on your cell phone before class begins.
Music players, laptops, netbooks, etc., should not be used during class.
The contents of this syllabus are subject to change, as necessary. You should periodically monitor this website to keep abreast of any changes, as well as posted homework assignments, hints, solutions, etc.
Four more JavaScript programs [10/22]
Four more JavaScript programs [11/19]
Ray's and Dondi's JavaScript Scratch Page
Changemaker.0.0.html- a bare-bones Changemaker script
Changemaker.1.0.html- a validated version (W3C XHTML 1.0)
Changemaker.1.1.html- the same, but also checks for negative inputs
Changemaker.1.2.html- the same, but writes output to the web page itself
SquareRooter.1.0.html- a script for finding square roots
SquareRooter.2.0.html- a slightly different script for finding square roots
GCD.iterative.html- a simple iterative script
GCD.recursive.1.html- a simple recursive script
GCD.recursive.2.html- the same, with the function assigned to a variable
Alphabetical Strings.1.html- uses a break statement
Alphabetical Strings.2.html- does not use a break statement
Prime Numbers.2a.html- illustrates a switch and that the input is a string
Prime Numbers.2b.html- shows how to convert the input to a number
Prime Numbers.3.html- uses a do-while loop
Prime Numbers.4.html- incorporates our own square root function
Recursive Functions.html- some illustrative recursive functions and their unit tests
Towers.1.html- script that keeps track of the number of moves
Towers.2.html- a script embedded within an ordered list that, implicitly, numbers the moves
Towers.3.html- a script that uses arrays to model the towers
CalendarMethods.js- useful constants and functions for other calendar scripts
DaysInMonth.js- the script
DaysInMonth.html- the encompassing web page
DaysBetween.js- the script
DaysBetween.html- the encompassing web page
Shuffler.js- the script
Shuffler.html- the encompassing web page
Revised: 22:00 on 18 November 2009