1 Which CS 111x should I take?

All of the CS 111x courses provide a full introduction to programming sufficient to take additional CS courses. Students who took all versions perform comparably in CS 2110.

CS 1110
A general section, designed to teach as many students as possible. Most (but not all) who take this course have no prior programming experience.
CS 1111
A general section, tailored for those with some experience but not enough to test out of the course. Has exactly the same assignments, grading, etc, as CS 1110 but meets less often and does not have labs.
CS 1112
Covers the same material as CS 1110/1111, but is organized based on the assumption that none of the students have any prior programming experience. It makes use of several techniques that have been found to be particularly effective for such students, such as an integrated lecture and lab, a different assignment set, required attendance and participation, etc. This comes at the cost of being unable to seat everyone who wants in and being less suited for those with some prior experience.
CS 1113
A generic number for more audience-specific introductions to programming, generally by emphasizing the topics that specific disciplines find useful. Section 1113-001 is designed for engineers, pulling examples and assignments from common engineering domains and teaching some tools and techniques engineers are likely to find useful.
Placement Test
If you have programmed before, you can likely place out of Introduction to Programming entirely. Placement tests are offered in the CS department offices (Rice 527); no appointment is necessary. If you pass the placement test, we advise taking CS 2110 to expand your programming ability further.

You might also consider taking CS 1511. CS 1511 is based off the successful CS Principles project and presents broader overview of CS topics. CS 111x will teach you programming skills and related topics; CS 1511 will teach you computational thinking and digital citizenship.

2 The course is listed as restricted

CS courses are open to students in all majors, but for the initial periods of registration (indicated below) many are restricted to students in majors that require the course.

As listed in the list of CS course restriction dates, 1110/1111 have the following dates:

Start of Registration
Open to SEAS students, CLAS rising 2nd year students, and Math or Cog Sci majors
Open to all
Restricted to rising SEAS 1st year students
Restricted to rising A&S 1st year students
Open to all

The CS Department has no control over the exact time of day that the restriction changes.

If you are not eligible to sign up for a full course, you cannot get on the waiting list. But, put yourself on the waiting list as soon as you can, because at the start of the term, waiting lists often shrink and many students do eventually get in.

3 I plan to declare a major that gets early enrollment

Until your major is coded in SIS by the registrar, limitations on enrollment will hold as listed. We will not make any exceptions based on intended major declarations.

4 Will the course fill up before I have a chance to enroll?

I cannot predict level of demand, but a good guess is similar to last Fall, which can be viewed by visiting Lou’s list for the appropriate semester and clicking on the enrollment number link (i.e., http://rabi.phys.virginia.edu/mySIS/CS2/enrollment.php?Semester=1168&ClassNumber=17556), then clicking all.

We are working to increase supply (our lecture rooms can hold more than last year), though there are challenges to make this happen (finding enough available lab spaces, etc).

Note that while waiting lists do fill up, they also tend to empty before the add deadline. Patience is sometimes rewarded with enrollment.

5 How do I get off the waitlist?

In order to come off the wait list, there has to be an open seat in BOTH the lecture and lab you are signed up for. If one or the other is not true, then SIS moves on to the next student who has the right combination.

Our main cap is the lab. The lab sessions CANNOT go over 46 due to fire code limits. A few seats in each lab are held back for a week or so to accommodate very special cases.

Some examples of special cases include:

  • Current SEAS 2nd year or higher that has not taken a CS 1 class yet
  • Incoming SEAS transfer 2nd year or higher
  • Early graduation

If you feel you warrant special consideration and are currently on the waitlist, please fill out the form here: https://goo.gl/forms/rL5Mx4c6cjYVP1t53

All SEAS Students will be given a seat, once each, provided they fill out the above form. If you lose it by dropping and re-adding the course, we cannot re-accommodate you.

Consider the other CS1 courses:

We are offering three other CS1 courses this semester: CS 1112 with Jim Cohoon (for students with no programming experience) and CS 1113 with Qureshi Asma (for future engineers). These are both good options to consider and all count the same for prerequisites and major requirements! CS 1511 this semester is also an introduction to computer science, though with a broader scope (and thus less programming depth) than our other CS1 offerings.

We wish we could take everyone that wanted CS 1110 or CS 1111, but it’s simply not feasible with the room sizes and resources we have. Please do try again next semester if you can’t get in this time.

Let us know if you have any questions.

6 If I’m at waiting list position n, how likely am I to get a seat?

First, we have no control over this at all. It depends entirely on other students dropping the course.

Second, SIS will only tell you your lecture position, but your lab position is typically what matters to getting a seat. Meaning that the waiting list position number stated by SIS is close to meaningless.

In the past, we have had fairly steady drops from the first day of class up to the add deadline, generally with between 5 and 15% turnover. But the variance is high and we cannot predict which labs people will drop out of.

7 Can I switch which lab I’m waiting for?

Yes, by dropping the class and re-adding the appropriate waiting list. Note that this will put you on the back of the waiting list. There is no way to change which lab you are waiting for without moving to the back of that lab’s list.

8 What can I do while on the waiting list?

You are welcome to come to 1110 lectures in Wilson hall (the 10am and 2pm sections), but not to physically come to labs (the first week’s lab being an exception: you may come to that), though attempting the lab activities on your own is encouraged. 1111 lectures and the 1110 lecture in Rice hall typically fill the room, so you might be asked to leave the room to make space for those enrolled if you attend those lectures while on a waiting list.

We hope to also give you the ability to submit assignments while on the waiting list so that when/if you get off you are in no way behind on your work. No promises, though.

9 My computer died. What do I do?

As this is a programming class, we do expect you to have access to a computer for the duration of the semester. If you are temporarily without a working machine, Python and PyCharm should be installed on publicly available machines in Alderman Library and other locations.

We expect you to make regular backups of your code so in the event of a failure you still have access to your assignments. We will not accept a computer failure as a reason to waive a late penalty for an assignment.

We highly suggest you look into using a cloud-based solution to make constant backups of particular directories on your computer, such as UVaBox found at http://its.virginia.edu/box/ or Dropbox found at http://dropbox.com. You can also do some basic assignments in an in-browser Python environment such as https://repl.it/, http://c9.io, http://pythontutor.com, etc.

If none of the above options work for you, the department has a small number of laptops it can loan out to students enrolled in CS classes. To gain access to one, talk to your professor (who has to make the request on your behalf).

10 Can I permanently swap sections?

Not easily… specifics follow based on your current status

10.1 If you are currently enrolled and

10.1.1 New lab and lecture have open seats

Then can drop and re-add in SIS. But note that you have to drop first, so you can’t simply keep your space in a full lab section and swap lecture sections.

10.1.2 Keeping a full (lab/lecture) section, swapping to an open (lecture/lab) section

Don’t use SIS; this has to be handled by the registrar directly. Once the semester begins, email professor Tychonievich an email of the form

Please swap Jane Doe (mst3k) from CS 1110 lab section 103 (SIS id 16952) to lab section 105 (SIS id 17564)

Fill in the appropriate name, computing ID, lab/lecture sections and IDs. You can find SIS ids of courses on Lou’s List. We’ll then verify there is space and if so, forward the request on to the registrar.

These swaps cannot be made prior to the start of the semester. Sorry.

10.1.3 Swap with someone else in a full section

Have one (1) of the swapping parties email professor Tychonievich an email of the form

Please swap Jane Doe (mst3k) from CS 1110 lab section 103 (SIS id 16952) to lab section 105 (SIS id 17564)

Please swap John Doe (aa1a) from CS 1110 lab section 105 (SIS id 17564) to lab section 103 (SIS id 16952)

The email sender should CC the other parties in the swap.

Fill in the appropriate names, computing IDs, lab/lecture sections and IDs. You can find SIS ids of courses on Lou’s List. We’ll then verify that all students are enrolled in their from sections and that the swap does not change total enrollment size in any section and then forward the request on to the registrar.

10.2 If you are currently on a waiting list

See Can I switch which lab I’m waiting for above. The same logic applies to lectures.

10.3 I’m currently enrolled, but there are enrollment restrictions now

You’ll have to wait for the restrictions to lift so that you could enroll before you can change section. See The course is listed as restricted above.

11 Can I go to different lab section this week?

Due to fire code limits, you cannot attend another lab session, even for just one week. We’re also doing group work, so you need to be there for your team.

If you need to do this because of conflict with another class or test, your other professor should provide you with an alternate time since you have a scheduled university class (this lab) at this time.

Missing one week in general will not affect your grade. Every student can miss one lab with no penalty (and you do not need to make up the work).

12 I’m in the X lecture, can I go to the Y lecture instead?

1111 students can attend an 1110 section on occasion if they like, though doing so will not excuse any missed attendance or participation activities. 1110 students should not attend 1111 lectures due to the size of the classroom. 1110 students can attend the other 1110 section on occasion as well, though again each section may have its own attendance and participation activities and the Rice hall lecture often fills up.

13 Can I take my test in a different lecture section?

Absolutely not.

14 I have another final exam at the same time as our final exam. What do I do?

When we get closer to the end of the semester, we’ll have a form you’ll fill out to get a separate time. We will accommodate most all cases here with no issue. Please do not email us about this before the end of the semester as we will have no other information to tell you.

15 I have travel and will miss the final exam. What do I do?

University policy does not provide any accommodations for travel. If you believe you are an exception, contact your dean; only deans may approve final exam rescheduling.

Know in advance that I already paid for tickets is not a special case.

16 My program handled all the example inputs correctly but still got a 0. Why?

This could be a grading error, but could also be because you hard-coded those specific cases instead of solving the general problem (see the syllabus).

17 What is hard-coding?

Wikipedia defines it as embedding […] an input or configuration data directly into the source code of a program. In this course, it most commonly appears when students solve the examples but not the general problem.

For example, suppose we ask for a function called sum that computes the sum of two numbers. For example, sum(2, 3) should give 5 and sum(-1.1, 1.0) should give -0.1. A correct solution would solve the general problem, like this:

def sum(x, y):
    '''returns the mathematical sum of its arguments'''
    return x + y

Conversely, a solution with the example inputs hard-coded might look like this:

def sum(x, y):
    '''a hard-coded solution that returns the mathematical sum 
        of (2, 3) and (-1.1, 1.0), but not most other values'''
    if x < 0: 
        return -0.1
        return 5

18 My WiFi isn’t working…

UVA makes three different wireless networks available to students. If one is down, try a different one

  1. Cavalier – this network is encrypted (meaning it’s more secure) and tends to be best supported. It should be your default. See ITS’s guide for getting it set up.

  2. Wahoo – this network is unencrypted and also usually unlisted. It also requires you register your device:

    1. See ITS’s page on this network, but especially the device registration page.

    2. You may have to manually enter the name wahoo in your network manager for your computer to find this network.

  3. Welcome – this network is unencrypted and intended for guest use, but you can register as your own guest:

    1. Select the Welcome_to_UVa_Wireless network
    2. Open a browser – you’ll be redirected to this site
    3. Click the button under the guest option – you’re registering as your own guest.
    4. Click the small underlined link Guest Wireless Passcode site.
    5. Submit (you don’t need to fill out the form unless you want to)
    6. write down the passcode; you’ll have to enter it manually repeatedly.
    7. Back in the page you were looking at during step 4, enter the passcode in the field labeled Passcode: and click Log In

It is uncommon for all three wireless networks to be down at the same time. In my experience, Welcome_to_UVa_Wireless in particular is almost always up, in part because it is annoying to have to keep entering passcodes so few people use it.

19 Can I make an announcement in CS 1110 or CS 1111?

We get so many of these requests that we cannot grant them all, and to avoid being unfair we generally do not grant any of them. If the announcement is purely academic in nature and there is a compelling reason why Introduction to Programming lecture is the right place to make it, email the professors; but we still make no guarantee we’ll accommodate you.

Raising your hand in class to make an announcement (rather than to ask or answer a question) is unprofessional behavior and will be treated as such.