syllabus

advertisement

COMP 110: Introduction to Programming

( using JavaScript )

Bulletin Description

Introduction to computer use. Approaches to problem solving; algorithms and their design; fundamental programming skills. Students can receive credit for only one of

COMP 110, 116, or 121.

General Course Info

Term:

Course/section:

Time:

Location:

Website:

Email:

Fall 2013

COMP 110 section 001

TR 9:30 to 10:45

Chapman 201 http://www.cs.unc.edu/~stotts/COMP110-f13/ stotts . comp110 @ gmail . com (send all class email here)

Instructor Info

Name:

Office:

Phone:

Web:

Office Hours:

Prof. David Stotts

Brooks 144 (Sitterson extention)

919 . 590 . 6133 http://www.cs.unc.edu/~stotts

TBA

Any email sent to the instructor’s personal account risks getting lost in the huge pile received every day, so please use the class account. The class email account will be read by the instructor as well as the TAs. The instructor will communicate with students via the email addresses given in ConnectCarolina for the class. Please get in the habit of scanning your email for information from the instructor about the class. Message titles will contain “COMP 110”.

Teaching Assistants (TBA)

Name

TBA

Office

Email Office Hours stotts.comp110 @ gmail.com

TBA … stotts.comp110 @ gmail.com

TAs will be available during their office hours to help students with concepts from class lecture and the text, as well as with programming assignments.

Textbooks and Resources

There is no required paper text for this course. We will be using a free online text

“Eloquent JavaScript” by M. Haverbeke, found here: http://eloquentjavascript.net/

There are advantages to the online text, such as the ability to execute programming examples, as well as edit and alter them. If you prefer paper, or wish to have

reinforcement for the online version, this text can be purchased from Amazon or other sources at a reasonable price. Here is a link: http://www.amazon.com/Eloquent-JavaScript-Modern-Introduction-

Programming/dp/1593272820

Course Description

This course is an introduction to algorithms, their design, and their representation in a computer programming language. Proper mastery of the course content requires the timely completion of several computer programming assignments, as well as in-class exams.

This course will teach you good sized chunks of the HTML and JavaScript languages, but it is a course in programming, rather than a course in a particular language. You are learning concepts that are general, and will transfer to programming in other languages such as Java and Python. If you have already learned to program using these, or a different programming language, you probably should not take this course. It is intended for people with little to no prior programming experience.

Class will be conducted in a hands-on, tutorial fashion. The instructor will often briefly summarize the concepts for the day, and then will develop example programs in class as demonstration of how to apply the principles being studied.

After each class, example programs from lecture will be put online at the class website for students to study, change, and use in their own code development. Any

PowerPoint slides used will also be online in the class website.

This is NOT a Web class. We will be using the Web – in particular Web browsers – as a vehicle for executing programs early on, but this is not a general course on Web technology. We will not study the technical structure of Web servers and clients, or the protocols by which they interact. You will learn some basic HTML (the markup/layout language for Web pages) and learn to create simple Web pages, but this is so we can get our browsers to execute JavaScript programs. We will not be creating beautiful complex singing-and-dancing web sites in this course. Your

HTML pages can be hosted in the Web space provided to you by the campus (so your friends and family will be able to see your progress on their own computers).

Our progression of technical topics through the semester will be this:

 Basics of computers and information representation

 Basic HTML tags and making a simple web page

 Embedding a JavaScript program in a web page and executing it with a Web browser

 Basic universal programming concepts (6 or 7 of them), expressed in

JavaScript and run in a browser or other environment

 More advanced JavaScript library capabilities

 JSON data interchange notation

All the software that we will use in this course is either already on your computer

(e.g. a web browser) or is available free for download to your computer. The software is also installed on all public computer lab machines located in various academic buildings and in the residence halls.

Programming is Doing. Reading your text as class progresses will help you understand the class topics (of course). Do your readings if you want to be ahead of this game. The text is provided for a reason. It often discusses programming concepts in more detail than can be done in class lecture. However, programming is not a skill you can acquire simply by reading a book. Learning to program is a skill that requires DOING, as much as reading and listening.

I will be programming in class to show you how the concepts under discussion work and how they are used. You are encouraged to bring your laptops to class and follow along with my programming.

To learn to program, you must write programs, and you must watch someone who knows how to program do it, and you must do what they do. It is a skill best obtained via apprenticeship and practice (like so many things in life).

Target Audience

This course is intended for students who have no prior programming experience.

This section using JavaScript is also intended primarily for students who are not majoring in Computer Science. While it is quite possible to take this section and then be a COMP major, you will have to become familiar with Java on your own if you do. COMP 401 assumes students come to that class having a basic familiarity with programming in Java; other COMP 110 sections teach using the Java language to assist in this. We have online resources that can assist you in Java self-study, and the instructor can help you determine if your Java work is coming out correctly.

Prerequisites

We assume no prior programming experience and require no UNC classes as prerequisite. However, we expect students to have a basic high school math preparation including algebra. We also assume you have some familiarity with using computers, specifically web browsers and text editors.

Goals and Key Learning Objectives

The main goal of this course is for the student to learn the fundamental concepts of programming a modern computer. Though we will use the specific language

JavaScript to write the programs we study, the concepts a student learns are expressible in all programming languages. A secondary goal is to instill an understanding of the basic components of internal computer structure, and the way information is stored and manipulated inside a computer.

When the course has been completed, each student will have

 been exposed to the concept of a model learned the major internal components of a modern computer

 practiced binary notation (the internal language of a computer)

 become familiar with powers of 2 (the binary base)

 learned 7 fundamental concepts of programming written code in the JavaScript programming language effectively tested computer programs for correctness learned how to execute JavaScript programs in different ways

 used some basic HTML webpage notation to prepare simple Web content practiced systematic problem solving by developing programs in a top down

 incremental fashion learned a few best practices in software development, such as working in small increments to isolate possible error sources

Course Requirements and Grading

Students are expected to come to class having read the relevant sections of the text and with cell phones off or muted. Since the lecture style is hands-on demo, the student will benefit from having a PC in class and trying what the instructor is doing.

The student will not benefit from using the PC to update facebook, online chat with friends, instagram text or tweet the astonishing things that will surely go on in class, watch Youtube vids of the Duke game, or bid on bike parts on eBay during lecture.

The student will complete between 5 and 8 programming assignments. The student will also take a written midterm exam in class, and a final written exam in the UNCdesignated exam slot for this class meeting day and time. The programs will be worth a total of 55% of the final grade; earlier programs will be worth slightly less than later, more complicated programs. The midterm exam is worth 20% of the total grade, and the final exam 25%. TAs will be doing the grading of student programs. TAs will assist with exam grading, with the instructor participating and managing the process.

Programs are graded based on correctness of the results produced; structural quality of the program source code; logical quality of the algorithm and effective use of the JavaScript language; and readability, including commenting. Students will receive further instruction in each of these areas as the class progresses.

We will use Sakai for submission of assignment materials and release of grades for assignments and exams.

Course Schedule and Key Dates

Lecture dates and topics, as well as dates of exams and assignments are found in the class calendar: http://www.cs.unc.edu/~stotts/COMP110-f13/calendar.html

This is also accessible from the menu at the top of the class homepage.

Course Policies

Attend class. I do not take attendance, and you are not directly penalized for missing class, but I do hold you responsible for what I teach in lecture. Seeing me putting into practice the concepts we are studying will be very useful to you. There will be some techniques I show in class that will greatly assist you in passing the exams and producing good programs efficiently, but they are not in the text.

Collaborative work. You are encouraged to work together for better understanding of the course material and assignments. But do your own actual program writing

by yourself. You may not collectively write a program with a friend or classmate and then several people submit the same code. Also, while working together can enhance your learning, too much reliance on others can be disastrous at exam time.

You may think you understand a concept when you are discussing it is a group… and then when you are on your own on an exam you discover the holes in your understanding. So make good use of any study guides you are given before exams.

Late work. Each program will have a specific date/time deadline; late programs will be penalized as follows:

 1 day late (up to 24 hours after due date and time): 10% deduction

 one class late (up to the start of the next class after the due date/time): 25%

 two classes late: 50%

 three classes late: 75%

 more than 3 classes late: 100%

Final exam. The course final exam is given in compliance with UNC final exam regulations and according to the UNC Final Exam calendar.

Honor Code

We are very serious about the honor code. It’s easy to cheat in this course; it’s also easy for us to detect plagiarism. So don’t do it! We know programming and programs better than you do (that’s why we can teach it !) Do your own work. If you work with others collaboratively (as noted above that you may) make sure the collaborative work is on concepts and understanding and that you produce your own program source code for submission. Observe fully the University Honor Code.

You are free to use any program content that was presented in class, in help sessions, or in the course texts without permission or citation. You can use pieces of code that you find in other texts, but cite the source in comments (no penalty). You may not use material from previous offerings of this course. And as said before, you may not submit code written by your classmates, or by any other person who specifically wrote it as a solution to the problem description.

The basic theme is this: you may get assistance from others on language concepts, problem understanding, and algorithm design, but you must write the code yourself to implement and test your solutions. This is how you learn… by doing.

For exams you will be required to sign a pledge attesting to the exam work being yours alone.

Disclaimer

The professor reserves to right to make changes to the syllabus, including program and homework due dates and test dates, as well as percentages for assignments and exams towards the final course grade. Any changes will be announced as early as possible.

Warnings and Wisdom

This can be a very time-consuming course. It is not unusual for a student to spend an average of 10-12 hours each week outside of class. Do not fall behind.

Subsequent assignments build on understanding of previous assignments.

Read the text and try the examples. Make use of the code examples we develop in class. We are doing these for a reason. The examples I develop in class will be very useful in solving the assignments I give you. They are not there randomly.

Programming is best learned by doing not by reading alone. This is why, in class, I

will be doing programming so you can see how is done. Take the text examples, change them, see what happens. Take the class program examples, change them, see what happens. Try stuff. Be inquisitive.

Start your assignments early. I know how long they take to complete, and I don’t give you 2 weeks to do an assignment if it only takes 2 days. So don’t wait until 2 days before the due date to start it. We cannot really assist you well if you are coming for help the night before and say “um… I am not quite sure how to get this thing going.”

Warning: programming is fun and can capture your imagination completely! It snagged me in 1976 and has not let go yet.

Download