Course Syllabus

CSCI 1133: Introduction to Computing and Programming Concepts

------------------------------------------------------------------------------------------

Basic Course Information

Lecture:
MWF 10:10am - 11:00am, Fraser Hall 101

Lab Sections:
021 - Th 8:00am - 9:55am, Walter Library 106
022 - Th 10:10am - 12:05pm, Walter Library 106
023 - Th 12:20pm - 2:15pm, Walter Library 106
024 - Th 2:30pm - 4:25pm, Walter Library 106
025 - Th 4:40pm - 6:35pm, Walter Library 106
027 - F 8:00am - 9:55am, Walter Library 106

Final Exam:
Saturday, May 9, 1:30pm - 3:30pm

------------------------------------------------------------------------------------------

Communication and Help:

Instructor: Evan Suma Rosenberg (he/him/his).  Contact me by email at suma@umn.edu or by coming to my office (Keller Hall 6-201) during regularly posted student hours.

Communication: Most online communication with the course staff should be done over Piazza, whether that be asking for help, requesting information, or submitting regrade requests.  You can find the link to our Piazza course here: 

http://piazza.com/umn/spring2020/csci1133

Each day there will be at least 2 TAs assigned to watch over Piazza from 9:00am - 8:00pm. They will monitor throughout the day and some questions may be answered the next day if you post later in the evening. The monitors will try and respond quickly but in some cases there may be a delay of a few hours, since they will be not watching every minute of the day but checking throughout the day.

If a question is not personal in nature and does not require you to post your code, then you should choose the Entire Class option when you post it, since it is likely that someone else has the same question (especially clarification questions regarding homework instructions).  Do not post code to the Entire Class: if your question requires you to post code then it belongs in a private post to the Instructors. Piazza questions should generally be limited to questions that have reasonably short answers: in-depth questions should be asked at office hours.  If you're asking for code-specific help, be sure to post your code along with your question, and specify what sort of things you have tried and any theories you have on what the problem might be.

Office Hours: Every TA and the instructor have office hours specifically for helping students posted at here: Office Hours

You can go to any office hours listed there; you don't have to restrict yourself to the office hours of the TAs from your lab.  This is a good place to ask for help if you're struggling to get Python/git set up on your laptop, don't understand how to get started on a homework problem, or have gotten stuck.  Office hours can get rather crowded close to homework deadlines (Tuesdays and Wednesdays in particular), so I would advise starting assignments early to take advantage of Friday/Monday office hours if possible.

CSCI 1135: For those of you who want additional help with your problem-solving skills, CSCI 1135 is a one-credit, pass/fail course designed to complement CSCI 1133.  The class meets every Tuesday evening from 6:00 - 8:00 PM, and is based entirely on attendance: there are no tests or homework.  While in CSCI 1133 we mostly focus on how to write Python code, CSCI 1135 is about computational thinking: particularly the process of breaking down problems and finding a step-by-step solution, a skill that applies across any programming language.  I highly recommend it to anyone who isn't confident in their ability to succeed in this class.  For more information, please check out the sample syllabus for the class (from a previous semester, when the class was called CSCI 2980 instead of CSCI 1135).

------------------------------------------------------------------------------------------

Books, Software, and Supplies Required for Class:

  • "Programming in Python 3" zyBook.  This may be purchased through University of Minnesota book store or online. If you purchase through the bookstore, make sure that you purchase a code for my section (020), and not one of the other CSCI 1133 lectures (001 and 030).  If you already purchased the wrong one, email support@zybooks.com and explain your situation.  Make sure to use your umn.edu email account when signing up or you won't get credit.  For more information, see the zyBook instructions.
  • An iClicker 2 remote (may be purchased at the University of Minnesota book store) or an iClicker Reef subscription (if you want to use your iOS or Android device instead).  For more information, see the iClicker instructions.
  • Python 3, IDLE, and git.  These programs are available on CSE lab machines, which you should have access to during the semester.  You can also run them on your own computer; see this guide for details.  Git is already installed on many MacOS distributions (especially if you have XCode installed), but Windows users should take a look at the git bash section of the tutorial (just select all of the default options while installing git bash).

------------------------------------------------------------------------------------------

Course Description and Learning Outcomes:

Throughout your career, you will acquire a broad range of skills and knowledge in computing. This class is the cornerstone for computer science majors, an important differentiating skill for other majors,  and a prerequisite for most other computer science courses. My goal is to help you understand how computing can be applied to problem-solving in any discipline, to introduce you to core concepts in computer science (e.g., algorithms, data structures, abstractions, objects), and to make these ideas concrete by learning to program in Python 3. This is an introductory course --- while some of the students in this section have programmed before, these experiences are so diverse that I do not assume any prior knowledge of programming.

After completing this course, you will be able to do the following:

  • Computationally think and use approaches commonly used by computer scientists to solve problems.
  • Problem solve real world problems and use different fundamental problem solving approaches (e.g. iteration, recursion, exhaustive enumeration.)  Identify key characteristics of problems that indicate possible solution approaches. 
  • Use data expressions, conditionals and loops, data types and structures.
  • Use equality, relational, and boolean operators and expressions.
  • Understand the object-oriented programming (OOP) paradigm and concepts and be able to explain the foundations of OOP.  Write classes and create objects using this paradigm.  Use data representation and abstract data types and fundamental data types and structures (e.g. primitives, lists, dictionaries, strings.)
  • Understand the concepts and properties of different types of algorithms.
  • Apply fundamental design concepts and principles (e.g. abstraction, program decomposition, encapsulation and information hiding, separation of behavior and implementation.)
  • Use pair programming and small group development skills
  • Use professional skills learned during class such as writing professionally, being held accountable for class commitments, time management, how to use programming tools (e.g. Git, integrated development environment (IDE), debuggers)

I look forward to helping you develop these skills!

------------------------------------------------------------------------------------------

Expectations in this Course:

Time Commitment: This is a FOUR credit course. This means that an average student will need to put in 12 hours of work a week in order to receive a C in the course. To get a higher grade, expect to put in more time or work more efficiently.

Lecture Attendance and Participation: Lecture attendance and active participation are required and will be tracked using the iClicker remotes or mobile app.  There should be a total of 39 lecture days (unless there is a weather cancellation), and each will be scored out of 2 points; one point for attending class, and one point for participating in all the exercises during that class.  I will drop your lowest 3 grades to accommodate for the occasional absence.  Absences beyond 3 days should be discussed  with the instructor as soon as possible to avoid getting penalized.

Lab Attendance and Participation: Most of the learning in this class happens by doing and much of this doing happens in the labs. Thus, lab attendance and active participation are required and will be tracked and graded by your lab TAs. You may miss two labs without any penalty (we drop your lowest two scores); missing three labs is an automatic failure of the course.

It is generally not possible to make up labs (even with a university-approved legitimate absence), so if you have missed or know that you will miss three or more labs for university-approved reasons, email me immediately and we'll discuss your options. See the link at the bottom of this syllabus for what constitutes a legitimate absence at this university.

Labs will be graded out of 3 points. 1 point is given for attendance, 1 point for showing up on time (if you are more than 5 minutes late, you will lose this point), and 1 point is given for completing the lab.

In most labs, there are four segments of increasing complexity: Warm-up, Stretch, Workout, and Challenge: after completing each segment you or your partner must raise your hand to be checked off by one of the TAs. Completing the lab generally means finishing all four segments, OR completing at least the first three segments and working on the fourth until the end of lab. Finishing the Workout and then leaving early does not count for completion: you must work on the Challenge until you finish or time runs out.

If you are stuck, be sure to raise your hand and ask for help from the TAs: it should always be possible to finish the Workout in time if you do this.

You are not permitted to gain access to the lab instructions ahead of time, as coming in with part of the lab already completed deprives your lab partner of the learning experience.

You are not permitted to attend a lab section other than your own without permission from the instructor (often I won't be able to grant this due to space constraints, but you can ask).

zyBooks Assignments: We are using an interactive textbook that requires you to complete simple programming exercises as you read.  In general, you'll be reading about each topic before it's covered in lecture, so the zyBooks exercises on each topic are due each Monday at 10:00 AM.

Homework: Homework will be posted on Wednesday and you will have a week to complete the assignment. Start early so that you have the opportunity to get help from the TAs if you're stuck. Submit in-progress portions of the assignment frequently. A predictable, legitimate absence on the day of or day before the due date will not allow you to submit a late assignment, since you've had an entire week to do the work.

Note that assignments are graded not only on your ability to submit something that works, but also on style (writing comments for each function, using descriptive variable names, solving problems with elegance rather than brute force, etc.)

Homework is to be completed individually (you can only ask the TAs and instructor for help, not other students), and you should not reference the internet for anything other than basic syntax questions (i.e. looking up how to write a for loop in Python is fine, but looking up how to write a program that finds the first n prime numbers is not, if the homework question is even remotely related to that task).  Read the Academic Dishonesty section near the bottom for details on this.

Exams: There will be three exams given over the course of the semester. They will be 45 minutes in length, and will be cumulative (though will focus primarily on material covered since the last exam). Each exam must be done individually and is closed-book, but you will be allowed one double-sided, 8.5" x 11" piece of paper for handwritten notes. If you know that you will be unable to attend the three exam dates listed below, contact me immediately to discuss options:

  • Exam 1: Wednesday, February 19
  • Exam 2: Wednesday, March 25
  • Exam 3: Saturday, May 9 (final exam period)

------------------------------------------------------------------------------------------

Grade Components:

Your final grade is based on the following items and weights:

  • 13 Weekly Homework Programming Assignments (turned in via git): 42%
    • Homeworks 1-12 are worth 3% each.
    • Homework 13 is a longer, two week assignment, so is worth 6%.
  • Three Cumulative Exams (done on paper, no computer): 30% (10% each)
  • Lab Attendance and Participation (tracked by undergraduate TAs, best 12 out of 14): 12% (1% each)
  • Lecture Attendance and Participation (tracked by iClicker, best 36 out of 39): 9% (0.25% each)
  • ZyBook Assignments (tracked by ZyBooks): 7% (All of the points available in zyBooks throughout the semester counts evenly, so they're each worth a little less than 0.01% of your grade)

Note that additional factors may cause a student to fail a course, even if their cumulative grade constitutes a passing score. The most common reasons are missing more than two labs (third missed lab is an automatic fail) and committing academic dishonesty. It can be tempting to copy code you find online or get a friend's help. We use software that is very good at detecting code plagiarism, so don't give into the temptation!

Both your ZyBooks and your iClicker grades will only update in the Canvas gradebook periodically (i.e., ~4 times during the semester). The grade that you will be able to see on your ZyBooks assignments and on the iClicker Cloud online accounts represents your most up-to-date grade for those categories.

The grading in this course is on an absolute scale.  This means that the performance of others in the class will not affect your grade.  Your percentage will earn you the following grade:

  • A    ≥ 93.0% 
  • A-    90.0% - 93.0%
  • B+   87.0% - 90.0%
  • B     83.0% - 87.0%
  • B-    80.0% - 83.0%
  • C+   77.0% - 80.0%
  • C     73.0% - 77.0%
  • C-    70.0% - 73.0%
  • D+   67.0% - 70.0%
  • D     60.0% - 67.0%
  • F      < 60.0%

Grades will NOT be rounded.  Hitting a grade line exactly will cause you to get the higher grade (so a 93.0% is an A, but a 92.9999% is an A-).  For S/N grading, a satisfactory grade (S) requires a weighted score of 70.0% or above.

------------------------------------------------------------------------------------------

Standard Policies:

This class relies on standard university policies. It's your responsibility to familiarize yourself with:

More on Academic Dishonesty: First, please review the Departmental Policy on Academic Dishonesty; this is a little more specific than the university-wide policy above.

How this applies to CSCI 1133 specifically:

1. You are permitted to use course material without citing: this includes lecture slides, the assigned textbook, anything from labs, and any additional material I post online for THIS iteration of CSCI 1133 (you can't use material from previous semesters). You can also use anything on the Python 3 reference website.

2. Copying code from the internet (other than the sources noted above), is Academic Dishonesty.

3. Posting class material to the internet without permission is Academic Dishonesty.

4. I consider searching for a currently assigned Homework problem on the internet to be Academic Dishonesty, even if you don't actually use the code.

5. If you submit a solution that you do not understand, that is Academic Dishonesty, because it is not an accurate representation of your own knowledge of the content. 

6. Any collaboration with another person on an Exam or a Homework Assignment is Academic Dishonesty (exception: asking current 1133 TAs or the instructor for help is not Academic Dishonesty).

7. Collaboration with other students on Labs or In-class Exercises is not Academic Dishonesty (for Labs, you are permitted to talk with other groups about the general approach to a problem, but are not allowed to actually copy code).

8. In general, Academic Dishonesty in this class will result in a 0 on the assignment or exam in question for the first offense, and an automatic F in the class for the second. 

Academic Freedom and Responsibility: Academic freedom is a cornerstone of the University. Within the scope and content of the course as defined by the instructor, it includes the freedom to discuss relevant matters in the classroom. Along with this freedom comes responsibility. Students are encouraged to develop the capacity for critical judgment and to engage in a sustained and independent search for truth. Students are free to take reasoned exception to the views offered in any course of study and to reserve judgment about matters of opinion, but they are responsible for learning the content of any course of study for which they are enrolled. Reports of concerns about academic freedom are taken seriously, and there are individuals and offices available for help. Contact the instructor, the Department Chair, your adviser, the associate dean of the college, or the Vice Provost for Faculty and Academic Affairs in the Office of the Provost.

------------------------------------------------------------------------------------------

Pretty much all of this syllabus (including this statement) is adapted from Nathan Taylor, Shana Watters, Lana Yarosh, or the American Association of University Professors Joint Statement on Rights and Freedoms of Students, because writing a good syllabus is hard.

Course Summary:

Date Details Due