CS46A Introduction to Programming—Online Section
Spring 2014 | Cay S. Horstmann | Department of Computer Science | San Jose State University
Calendar
- Week 1: Thursday, January 23 - Sunday, January 26
- Week 2: Monday, January 27 - Sunday, February 2
- Week 3: Monday, January 3 - Sunday, February 9
- Week 4: Monday, February 10 - Sunday, February 16
- Week 5: Monday, February 17 - Sunday, February 23
- Week 6: Monday, February 24 - Sunday, March 2. Midterm 1 March 1 14:00 - 15:30 WSQ109
- Week 7: Monday, March 3 - Sunday, March 9
- Week 8: Monday, March 10 - Sunday, March 16
- Week 9: Monday, March 17 - Friday, March 22
- Spring break
- Week 10: Monday, March 31 - Sunday, April 6
- Week 11: Monday, April 7 - Sunday, April 13. Midterm 2 April 12 14:15-15:45 SCI164
- Week 12: Monday, April 14 - Sunday, April 20
- Week 13: Monday, April 21 - Sunday, April 27
- Week 14: Monday, April 28 - Sunday, May 4
- Week 15: Monday, May 5 - Sunday, May 11
- Week 16: Monday, May 12 - Tuesday, May 13. Final exam May 17 14:00-16:30 WSQ101
Due Dates
- Programming homework is due every Wednesday and Sunday. You submit a draft on Wednesday and a final version on Sunday. Exception: In the first (short) week, you submit a short Homework 0 instead of a programming assignment.
- Quizzes are due every Monday and Thursday.
- Labs are due every Friday.
- You submit all your work to Canvas.
- All due dates are 6 pm (18:00 PST/PDT.) You have a grace period of 5 hours so you can get to the nearest internet café and upload your work if you had a power outage or some other mishap. Any submissions that arrive past the grace period will not be accepted. No exceptions!
Tutoring
- The Collaborative Study
Lab meets Monday to Thursday 1:00 to 6:00 PM in MH 266, next to the CS Club.
- There is a Webex session Wednesdays 3:30 - 5:30 PM (meeting number 927 141 099) and Sundays 4-5PM (meeting Number 920 117 780). Go to
http://webex.sjsu.edu
, log in with your SJSU ID, and search for CS46A or enter the meeting number.
Lab Webex Times and Meeting Numbers
- Wednesday 5-7PM Meeting Number: 197 271 889
- Thursday 5-7PM Meeting Number: 199 584 975
- Friday 3-5PM Meeting Number: 927 548 617
- Saturday 8-11AM Meeting Number: 922 286 507
- Sunday 10AM-noon Meeting Number: 928 808 768
Go to http://webex.sjsu.edu
, log in with your SJSU ID, and search for CS46A or enter the meeting number.
Join the Webex session if you have a question or if you are ready to show your work.
Online Tools
In this course, you will use several online tools. Links are on top of this page (the red rectangles). Here is what to use when:
- For questions, news, and discussions, we use Piazza. Piazza is an excellent discussion group that can handle a large number of users and topics. If you have any question about the course (homeworks, videos, etc.), ask it on Piazza. Piazza is a public forum where students can help each other. You'll get rewarded for asking questions or answering them. I'll pitch in too if nobody has the answer, but in previous semesters I have found to my amazement and delight that this doesn't happen very often.
- For submitting work and for grades, we use Canvas. Canvas is a private system that keeps your grades secure from prying eyes, and that gives you a proof of timely submission for your assignments. (In some courses, Canvas is used for providing the course materials as well, but this course is an “open” course—everyone can look at the materials without a login.)
- Video lectures are at Udacity. Originally, this online course started as a “massively open online course” or MOOC with Udacity, but they decided that there is more money to be made with corporate training than higher education. However, the videos and exercises are still there, and they have a nice system for showing them in order and remembering the place where you took a break. You will watch these videos instead of going to a classroom.
- This website has a schedule with a detail plan of what you should do each week. Be sure to check it at the beginning of every week!
- Office hours and class discussions are through Webex. If you are a local student, you can also visit me in my office (MacQuarrie Hall 416) during office hours.
- Feel free to email me with private questions and concerns. My email is
Cay.Horstmann@sjsu.edu
. But for questions about the course material or homework, please use Piazza, not email. You'll earn a point for asking a question, and you'll earn the gratitude of your classmates for asking what's on their mind too.
Why Should I Take This Course?

You want to learn to code. You really do. Once you know how to code, you can automate mundane digital tasks in your life. And even if you are lucky enough to live a life that is free of mundane digital tasks, you want to know what can and what cannot be coded.
Imagine you were the president of this country, and your advisors told you that it would be a piece of cake to implement a web site that instantly checked that any applicant was who they claimed they were, how much money they made, and what health insurance subsidies they could claim. After having taken this course, you'd know to ask some questions. Browsing plans, sure. Computing subsidies in real time? That's really hard. Quite probably, some people in Washington are kicking themselves this very moment that they didn't take a programming course when they had a chance.

This course teaches you the basics of programming and the way that computer scientists think. If you so choose, it launches you towards a career in computer science. If you are a student in another discipline, you will be able to put what you learned to practical use in your field. What's not to like? Go take this course.
Ok, it's not that simple. There is a catch. Learning how to code is hard work. But the magic of this particular offering is that the hard work is reduced to that, just hard work. When set up the right way, programming is just practice, like learning to play the piano or propelling an orange ball into a circle with attached webbing.
And that's how the course is set up. You'll listen to me for a couple of minutes. Then you'll put to work what you just heard. You may be confused, but that's ok. You'll try out an exercise. If you get it, move on. If not, check out how I did it. Feel free to listen again if you are still unsure. Ask a question in the discussion group, or just check out what others have asked. Ultimately, the exercises are what counts. Give them your best, and you will learn. Just like the folks who keep putting their fingers onto those white and black keys, or who keep propelling that orange spheroid. Practice does make perfect.
Most people get quite good at programming with practice. Take this course and be one of them.