Description

An introduction to computer programming – the concepts involved in using a high-level language and the program development process. The goal of this course is proficiency in the design and implementation of programs of significant size and complexity. This course is quite demanding because of the length of the programming exercises assigned. This is the first course in the computer science major sequence.

Prerequisites: Math 140 credits or placement; or Math 130 as co-requisite; or permission of the department.

General Information

Introduction
https://piazza.com/umb/fall2016/cs110eveningsection/home

Hi, my name is Bill Campbell. This is the introductory course for the CS major. We don't presume any programming experience but we do expect you to do a lot of learning (e.g. of the particulars of the Python Programming Language) on your own. There are also lots of mechanics, e.g. installing and using the virtual machine, and mastering an editor, that you must master on your own. And the assignments can be challenging. You will find yourself spending a lot of time formulating, coding, testing and fixing your solutions. Be warned.

I find programming both challenging but also quite fun. I expect you will find it challenging. Don't be put off by the challenge. But if at the end of the semester you find that you did not enjoy this, then you might reconsider whether or not you want to do programming. Life can be challenging but it should also be enjoyable.

TO DO NOW:

1. Sign up for a CS Lab account (below).

2. Read CS for All, section 1.1 and Chapter 2, at https://www.cs.hmc.edu/csforall/.

3. Install and try out your programming environment (below).

4. Read and start out doing Homework 1 in the Resources section,
https://piazza.com/umb/fall2016/cs110eveningsection/resources.
Outcomes
This course is the first course in the required undergraduate sequence; as such, it addresses the following "outcomes", from a list for our BS degree at https://www.umb.edu/academics/csm/computer_science/ug/computer_science_bs

(1a) demonstrate proficiency in problem solving, software design and development, data structures, algorithms, computer organization and computer architecture;

(1c) write programs, document programs and test programs, in a variety of programming languages, supporting different programming paradigms;

(1d) be proficient in at least one (in-demand) programming language;

(2a) understand and work with some of the important theoretical underpinnings to computer science;

(4a) write about their programs and issues related to computing;
Textbooks
There are two textbooks for this course (we differ slightly from
Professor Swami Iyer here). Fortunately, both are on line and free:

1. Christine Alvarado, Zachary Dodds, Geoff Kuenning, Ran
Libeskind-Hadas. CS For All. Available at https://www.cs.hmc.edu/csforall/.

This text is from Harvey Mudd College. We may use other material from
The CS Department at Harvey Mudd College; when we do, we will credit
them as HMC.

2. Allen Downey. Think Python -- how to think like a computer scientist. Green Tea Press, 2012. Available at http://www.greenteapress.com/thinkpython/thinkpython.pdf.
Setting up a Programming Environment
Professor Iyer has established an excellent page on how to set up a programming environment for this course.

See http://www.swamiiyer.net/cs110/environment.pdf.

I suggest you set up the pre-configured VM; it's (closer to) the future.

You can get the VM image for this course at http://academictorrents.com/details/364a52f543a447dcefd9e2512c201aed366f861e. You will need uTorrent to download this; see http://www.utorrent.com/intl/en/.
Python 2.7
We shall be using Python version 2.7 in this course. Although there is a more recent version (3), many libraries exist only in 2.7. Furthermore, the differences are small and are mentioned in the texts.

Python.org maintains excellent documentation for Python 2.7 at https://docs.python.org/2.7/index.html.
HMMM -- the Harvey Mudd Miniature Machine
CS Lab
In order to use the computing resources of the department, and in particular, those in the CS Lab (S-3-158), you need to setup a CS account. With your CS account credentials, you can connect to our designated servers (users.cs.umb.edu or users1.cs.umb.edu or users2.cs.umb.edu) remotely using SSH. With the same credentials, you can also login to the Ubuntu Linux systems in the CS Lab. In addition, you can login to the Windows systems in the lab with the same username and an initial password abcd_1234, which you must change the first time you login.

To apply for a CS account from your computer:

1. Start Turing (your VM) and login to your student account.
2. Launch a terminal by clicking the “Terminal” icon on the bottom panel.
3. Apply for CS account by running the command

ssh apply@apply.cs.umb.edu

at the command prompt (type apply when prompted for a password). Follow the instructions on the screen  —  enter your username if you already have a CS account, or select a new username otherwise, and then select the courses you are enrolled in for this term. Once you have successfully applied for the account, it will be created within a day.

You can alternatively apply for the CS account using one of the designated computers in the CS Lab.

[Thanks to Professor Iyer.]
Basic UNIX for Computer Science Students
Professor Glenn Hoffman has written a concise introduction to the UNIX (of which Linux is a flavor) operating system: http://www.cs.umb.edu/~ghoffman/linux/unix_cs_students.html
A Review of Pre-Calculus
Khan Academy offers a review of pre-calculus, something we expect you to be familiar with, at: https://www.khanacademy.org/math/algebra-home/precalculus
Grading
1. 50% Programming Assignments - posted on the Resources page: https://piazza.com/umb/fall2016/cs110eveningsection/resources

Submit assignments using Vault, at: https://vault.cs.umb.edu/CS110_56/login/ Passwords will be sent out after add/drop.

2. 15% In-term Exam 1: Wednesday, October 19

3: 15% In-term Exam 2: Wednesday December 7

4: 20% Final Exam: 12/21/2016, 3 - 6pm, W-1-0006
How to Succeed in this Class
This is a challenging course. But you should succeed if you do the following.

1. Prepare for class by doing the readings and going over the handouts (see the resources section).

2. If you have questions, ask in class, ask in the discussion sections, or ask on the discussion section on this site. I monitor it (at least twice) daily.

3. Come to the discussion section corresponding to the section (5 or 6) for which you are registered. Ask questions there.

4. Make use of my office hours (on my home page). If you cannot make those times, send me email and we (you and I) will schedule another time.

5. Start working on the assignments immediately, even if it just means reading through them the day they are assigned. You can ask questions about them in the next class.
Help and Tutoring
Tutoring for this course is available through the office of Math Resource Center. A student is allowed to reserve two private half-hour sessions per week. Information, instructions, and help registering, are available in the tutoring center. Walk-in tutoring can be had, subject to tutor availability at the time of visit. [Iyer]
Collaboration and the Student Code of Conduct
While it is important that we ask each other for help, your programs (and your exams) must be your own work.

1. You are encouraged to come to me, to your discussion section leader, or to Kyler Mikulski (the CSM Supplemental Instruction Leader for CS 110) for help.

2. You should discuss class topics with us and with fellow students.

3. But your programs must be your own work. Any attempt to pass off the work of others (including anything found on the Internet) is plagiarism, and will be rewarded by your being failed. (There's always next semester.) The University's Code of Conduct may be found at https://www.umb.edu/life_on_campus/policies/community/code.

4. The in-class examinations will test your programming prowess. You will have that iff you do your own work.
Accommodations for Students with Disabilities
Section 504 of the Americans with Disabilities Act of 1990 offers guidelines for curriculum modifications and adaptations for students with documented disabilities. If applicable, students may obtain adaptation recommendations from the Ross Center for Disability Services, M-1-401, (617-287-7430). The student must present these recommendations and discuss them with each professor within a reasonable period, preferably by the end of Drop/Add period. [UMB]
Additional Policies
1. Come to class. Be on time.
2. Please silence all cellphones.
3. Stay engaged. Ask questions.

Announcements

Announcements are not public for this course.
Staff Office Hours
NameOffice Hours
Kyler Mikulski
When?
Where?
Bill Campbell
When?
Where?
Zheyun Xiao
When?
Where?