COMS 1001: Introduction to Computers (Spring 2006)

Intended primarily for students in the humanities and not available to engineering students. General introduction to computer science, including the design of algorithms and computer hardware, as well as hands-on experience with applications such as spreadsheets, databases, and the World Wide Web. Introductory programming in Javascript and Bash.
Michael E. Locasto

[course details] [academic honesty] [syllabus] [web board] [policies] [Courseworks] [academic calendar] [links]

General Information:

Prerequisites: Introductory course requires basic familiarity with a computer. Must know how to type, surf the web, and read email. If you're not exactly sure how to do these with respect to Columbia's computer systems, please see me. I can be reached via email or at 1 (212) 939 7177. No knowledge of any programming language is required. The course consists solely of a 3 point lecture, although the homework assignments include light programming tasks. You do NOT need to purchase a CLIC, Columbia CS, or MRL account for this course. The only programming tools you need access to are a web browser (e.g., Firefox) and the Unix command line provided by the CUNIX environment.

The SSH client PuTTY is useful to access the machines to do your work remotely from a MS Windows computer.

Name Role UNI Office Hours
Michael Locasto Instructor mel2008 15:30 - 17:30 :: Wednesday, CSB 522, or by appointment
Lauren Wilcox TA lgw23 13:30 - 14:30 :: Tuesday & Thursday, TA Room
Sambuddho Chakravarty TA sc2516 18:00 - 19:00 :: Monday & Wednesday, TA Room

Meetings: Tuesday & Thursday 17:40 -- 18:55, 833 S. W. Mudd Hall. Improve your heart rate -- take the stairs.

Course Texts:


  1. Learning the Bash Shell, 3rd Edition by Cameron Newham and Bill Rosenblatt (ISBN 0-596-00965-8)
  2. JavaScript & DHTML Cookbook: Solutions and Examples for Web Programmers by Danny Goodman (ISBN 0-596-00467-2)

  1. Invitation to Computer Science 2nd Edition by G. Michael Schneider and Judith L. Gersting
    Java Version, Thomson Course Technoloogy, 2005. (ISBN 0534419941)

For the text books, remember that B&N usually offers same day delivery in Manhattan. You can also obtain them directly from the publisher (OReilly),, or the school bookstore.

Lecture Notes and Course Schedule:

Columbia Academic Calendar
Date Topic Assignment(s) Due Notes
January 17 Course Overview    
January 19 Computer Organization [review 1]    
January 24 Digital Logic, Boolean Algebra, Binary Read "In the Beginning..." alu.jpg
January 26 Essay Discussion, Digital Logic, ALU operation Assignment 1  
January 31 Assembly Language, FDX-cycle [review 2]    
February 2 Intro to Bash and CUNIX Read Chp1, Bash Basics, in LTBS CUNIX notes
February 7 Bash Commands, Intro to HTML [html review] Assignment 2 fun with Bash
February 9 Intro to Javascript [review] [hello.html, dec2bin.html]
February 14 Variables and Strings HW1 cscu.jpg, hw1page.pdf
February 16 Arrays Read Chp1 (pp 1--25) in JS&DC [strings.html, print-array.html]
February 21 Control Flow and Math Read Chp3 (pp 50--63) in JS&DC math.html
February 23 Functions [review] Read Chp4 (pp 80--101) in JS&DC simplefunc.html
February 28 Recursion   recursion.html, towers.html
March 2 Review for Midterm    
March 7 Midterm Exam
March 9 Video about Open Source and Linux HW2  
March 14 Spring Recess
March 16 Spring Recess  
March 21 Midterm answers hangman hint
March 23 Languages and Levels/Assembly   sh.c, add.c, add.s
March 28 Operating Systems    
March 30 No meeting (optional) attend
April 4 OS (cont.) Extra Credit
April 6 Scheduling Algorithms [review]    
April 11 Networking & Internet    
April 13 Security
April 18 Presentations 1 HW4 due
April 20 Presentations 2    
April 25 Final Exam Review  
April 27 Final Exam Mudd 833 17:40-19:00

Course Policies:

The point of this course is your intellectual enlightenment and enjoyment. I want the course to run as smoothly as possible, so I encourage feedback on both positive and negative aspects. Feel free to drop by my office, send email, or leave a note.

Your grade is based on 1000 points and is split according to the following schedule:

Class participation counts heavily towards your final grade. I expect and encourage thoughtful and lively participation and discussion. I strongly encourage you to use the class web discussion board to communicate with the TA. This BBoard is not the one in Courseworks. Refer to the link at the top of the page.

Refrain from posting solutions or questions that encode a solution. DO ask questions that would likely be of help to your classmates. If you have a question, it may have been answered on the board already, so please check before you post a "me too" question.

I typically DO NOT scale or curve grades unless there is a classwide epidemic of failure. Plan your work and effort based on the assumption that there will be no curve, but don't panic. The point of the course is to reward you for learning, not penalize you for not learning.

You can contact me via email, but please start your email's subject with the string [COMS 1001]; otherwise, I will likely not see it -- I get a lot of email. Please refrain from emailing us technical questions directly; instead, use the BBoard, as we monitor it frequently. You should save direct emails for personal discussions (your grade, etc.). You can encrypt your email to me if you wish, using my GPG (GNU Privacy Guard) public key. Keep your email short and to the point. I'll probably ignore it if it is longer than one or two paragraphs.

Please turn off all cell phones and other noise-making devices.

There may be unannounced quizzes. They will count toward your class participation and cannot be made up.

While collaboration on homework and projects is greatly encouraged, your answers must be original. No collaboration is allowed on the final or midterm. Students collaborating on assignments must clearly list with whom they worked. If your answers look the same or I feel that one person did the work and the other copied, I will treat the incident as plagiarism, give both students a zero, and forward the matter to the Dean. The bottom line is that general discussion is welcome, but specific solutions cross the line.

Cheating and Plagiarism are absolutely forbidden. I will assume that you have read both the Computer Science Department's Policies and Procedures Regarding Academic Honesty and Columbia's Engineering School general Policy on Conduct. Retribution and penance are swift and severe. Again, I urge you to read the policies for your own good. It is almost absurdly easy to discover cheating, and often difficult enough to do a good job camouflaging the cheating that you would have saved time just doing the assignment.

No late work will be accepted.

Grievence procedures: If you feel that grading was unfair, you must follow this procedure in order to document your case and bring it to a swift and fair conclusion. The policy is meant to give you a fair shake without wasting the TA or professor's time. This is a classic tradeoff; computer science is all about tradeoffs.

  1. When your work is returned to you, check it.
  2. Do NOT make an immediate verbal complaint to the professor or TA. Such complaints will be ignored or forgotten. Instead, see point 3.
  3. Document in writing what you think is the grading mistake. Writing does not include email. "Writing" means hard copy printouts of typed material.
  4. Submit your written complaint to the TA. Keep a copy for yourself.
  5. The TA will respond in writing. The TA will keep a copy for herself.
  6. If the matter is not resolved by the TA, you may submit the written record of the dispute to the professor.
  7. The professor will examine the written record only and decide the merit of the matter. The professor's word is final.
  1. Be terse. Good writing does not waste words. Eloquence is not indicated by complex and flowery phrases.
  2. The right to regrade the entire assignment is reserved.
  3. If you have a complaint, you should initiate this procedure no later than one week from the time the work was returned (or made available) to you, regardless of whether you were in class or not.
  4. Don't try to justify a clearly wrong answer. Argue only for what are clear mistakes in grading or where you believe the official answer is flawed or wrong. If your argument has merit, it will succeed.
  5. Avoid ad hominem attacks. Stick to the facts.

last updated: 13 April 2006
Copyright © Michael E. Locasto 2005--2006 .