Intro to Computer Science

Course Policies

Read Me

Apologies in advance for the length of this document, but there are a number of qualities about this course that make it different from most courses that you have taken in the past. We'll be mentioning most these course policies during our classroom discussions, but please take the time to make sure you understand them here.

Course Description

From the Polytechnic School Course of Study:

Intro to Comp Sci Course Description

The Introduction to Computer Science course is an introduction to computer programming using the Python language. Topics of study include object-oriented program design and implementation, program analysis, data structures, control structures, and basic algorithms, along with additional discussion of some of the legal, social, and ethical issues associated with computer use. Assignments include short programming exercises, reading and a series of larger-scale programming projects. Home access to an Internet-connected computer (Windows, OS X, or Linux) is required.

Topics of study and activities in the course include:

This course is a fast-paced but enjoyable introduction to computer science and computer programming. You're going to love it!

Code of Conduct

The instructor of this course is dedicated to providing a respectful, harassment-free community for everyone. We do not tolerate harassment or bullying of any community member in any form.

A fine line

Hackers, coders, nerds, and geeks, have a counter-culture tradition that celebrates a piratical "us vs. them" mentality. Good natured teasing and "shenanigans" are all part of the fun when sharing a private joke with friends, but in a classroom, misunderstandings can develop quickly. Be especially sensitive to how your remarks and behavior—perhaps even meant to be helpful but expressed in an aggressive, critical, or demeaning way—may be misunderstood.

Harassment includes

Participants asked to stop any harassing or bullying behavior are expected to comply immediately.

If a participant engages in harassing behavior, representatives of the community may take reasonable action they deem appropriate including warning the offender and reporting the behavior to school administrators.

If you are being harassed, notice that someone else is being harassed, or have any other concerns, please act to intercede or ask for help from the instructor or any school teacher or administrator.

This Code of Conduct has been adapted from the one at PyLadies.com and is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported license.

Course Resources

This course will assume that you make use of a number of different resources:

The course website most notably includes a daily schedule for our class, online lectures that you will be asked to refer to before and after presentations in class, and copies of assignments and other resources used in the course.

Computers

You will need to have a laptop for use in this course—any Apple or PC laptop running Windows, macOS, or Linux will work. Make sure that your laptop's battery is capable of holding a charge for the duration of class or that you have a power supply that you can plug in.

You will need to install software for this course, including the MiniConda distribution of Python3. Windows users will need to have access to the Ubuntu bash app for Windows.

Notebook

Computer science is only partly about writing code on the computer—we make use of paper documents in here as well. You will need to take notes and draw diagrams as you learn our subject, and print or receive in class documents that you will need to save, store, and be able to access in a 3-ring binder. Either use a small section of a binder currently used for other classes, or get a half-inch 3-ring binder to be used only for this class.

Homework

You will have work for this class that needs to be completed outside of our meeting time, including:

It may be the case that you occasionally find yourself stumped by some of problems on a particular assignment. In these cases, you are encouraged to:

No external references should be used in this course

The course materials available on this website and our textbook are sufficient for our needs in here as we learn the fundamentals of the Python programming language.

You should not be Googling for answers, wandering around StackOverflow, asking ChatGPT, etc. for assistance. The answers you get will usually be inappropriate for our work, will not help you learn the material, and thus are ultimately a waste of your time.

While occasionally looking for assistance on the Internet is an important skill for experienced programmers, the work in here doesn't require arcane programming strategies that you've never seen before; it requires applying what we've learned to a specific problem. If you find that it's taking you too long to solve a problem, ask the instructor or another student for advice, or check the pseudocode that is available for some problems.

Occasionally you will have access to answer keys or solutions for some of our work.

Make good use of solutions/answer keys

Although you will sometimes be able to consult published solutions and/or answer keys, avoid working on programs and homework with the solutions readily available. Part of the learning process is getting your brain to think about a problem for a little while. You don't sit down to work on a crossword or soduku problem with the answer key available. The point of working on a puzzle is to figure out the puzzle. Looking at the answers before your brain has had a chance to really wrestle with the problem may help you in the short term, but it doesn't help you learn the material.

Finally, you will often find yourself working, formally or informally, with other students in the class. When working with other students:

Do not copy-paste

Our primary goal here is to help you learn how to think about problem-solving, and learn how to create programs. You're trying to train your brain, and copy-pasting code sidesteps that whole process.

NOTE: The "no copy-paste" policy is not advice—it's a rule in this course. See Academic Integrity below for further information.

Python Style Conventions for Poly's Intro to Computer Science course

In order to assist you in writing, reading, and understanding the programs that you'll be working on in here, you'll be asked to follow a number of style conventions. These include:

  1. Initial Python path, the first line of the program
    #!/usr/bin/env python3
  2. Initial Comment for every program includes 5 lines of code, as shown in the example below.
    """ quadraticSolver.py """ __author__ = "Richard White" __version__ = "2020-09-24"
  3. Capitalization convention in code
    • variables and methods are written in all lower case (except if using camelCase usage).
    • Classes are written in lower case but begin with a capital letter.
  4. Width of program
    Lines in a program may be up to 120-characters in width, but no more than that.
  5. Indented blocks
    Blocks of code will be indented 4 spaces. Do not use the Tab key to indent unless your text editor has been configured to "auto-expand" tabs a width of 4 spaces.

We'll be developing additional conventions as the course proceeds.

Procrastination

Thanks to your intelligence and excellent pattern recognition skills, you have probably become well-trained in the fine art of "putting things off till the last minute." In many of your classes, your ability to procrastinate has served you well.

Programming doesn't work like that.

The skills you'll be developing in here require time to sink in. Trying to fit a one-hour assignment into 15 minutes, or a ten-hour assignment into an hour-and-a-half, simply will not work.

Think of creating a piece of art. Whether it's a small or large, the work that you're creating takes time to develop—there aren't any shortcuts, and there are inevitably problems (see next section, Technical Glitches).

My advice:

I have every confidence that you'll figure this out sooner rather than later.

Technical Glitches

You can almost certainly anticipate a wide range of technical glitches that will conspire to impede your progress in here.

None of these are excuses for turning in late work, with the possible exception of sudden illness on the day a homework assignment is due, and even then, there's this thing called The Internet. Maybe you've heard of it? ;)

Plan for the unexpected, and try not to panic when your emergency plans fail. A missed homework assignment here or there won't be a problem for anyone, but a pattern of missed smaller assignments, or a major assignment that's not completed on time, will quickly become a problem. I'd encourage you to do what you can to avoid finding yourself in that situation.

Turning in assignments

You'll have a number of different types of assignments in here, most of them involving writing programs in Python, and most of these programs will be written on your computer, often at home. In order to "turn in" these assignments, you'll need to upload them via SFTP or SCP to a directory on the course server reserved for such purposes.

Unless stated otherwise, programs assigned on a given day are due that evening by 12:00 midnight. At that time, the programs will be automatically evaluated by testing software, so you can't afford to turn in assignments late. You are strongly encouraged to get your work done on these assignments early, so as to avoid any last-minute problems: the assignment was difficult, your connection was down, etc.

Assignment Evaluation

Evaluation of your work depends on the nature of the assignment. Tests and larger computer-based projects will be evaluated in a fairly traditional manner. Daily written homework assignments are worth fewer points but are an important aspect of your learning the material.

Daily programming assignments are going to be evaluated via a qualitative system used at Stanford. There are a number of different qualities any given program is evaluated on: efficiency, legibility, correctness, completeness, comments, etc. Although the correctness of your program will be established using a suite of tests, these assignments will be graded on the following scale:

GradeEvaluationScore
++An absolutely fantastic submission of the sort that will only come along a few times during the quarter. Rarely awarded, but well-earned.7/5 points
+A submission that exceeds our standard expectation for the assignment. To receive this grade, a program often reflects additional work beyond the requirements or gets the job done in a particularly elegant way.6/5 points
✓+A submission that satisfies all the requirements for the assignment. It reflects a job well done.5/5 points
A submission that meets the requirements for the assignment, possibly with a few small problems.4/5 points
✓–A submission that has problems that cause it to fall short of the requirements for the assignment.3/5 points
A submission that has extremely serious problems, but nonetheless shows some effort and understanding.2/5 points
––A submission that shows little effort and does not represent passing work.1/5 points
0Assignment not submitted on time.0/5 points

Grading

Your grade will be based on a weighted percentage, according to the following scale used by classes at Poly:

A93% and above
A-90-92%
B+87-89%
B83-86%
B-80-82%
C+77-79%
C73-76%
C-70-72%
D+67-69%
D63-66%
D-60-62%
Fless than 60%

Academic Integrity

In addition to assisting students with learning material, teachers are often responsible for assessing their progress. In order to do this, students may be given a number of different types of assignments: homework, quizzes, tests, in-class activities, laboratory experiments to conduct, research papers, individual and group projects, presentations, etc.

It is understood that for some of these assignments, students may collaborate with one another. Four lab partners may perform an experiment as a group and share data. A student team may design and present a project together. Students might consult each other to find out how to solve a homework problem. In these cases, collaboration is accepted and even encouraged.

Collaboration ≠ Copying

The term "collaboration" refers to discussing a problem and sharing ideas on how to solve it. It does not consist of simply copying someone else's work.

In many cases, however, the teacher desires an individual assessment of the student, ie. an answer to the question: "How much progress has the student made in mastering the material?" These assessments, usually in the form of quizzes and tests, are to be performed without assistance from any other sources or students.

There are many ways that a student may cheat, but they all fall into one of four categories:

  1. giving or receiving unauthorized information on tests, examinations, or other work
  2. copying another student's work, either word-for-word or by rephrasing
  3. using any unauthorized aids on tests, examinations, or other work, or
  4. submitting someone else's work, in whole or in part, for your own.

Thus, looking at someone else's test paper to copy the answer to a problem, discussing a test problem or sharing its solution with another student, copying test problems or answers and sharing them with another student, stealing a test, stealing the answers to a test, and using notes during a test that have not been expressly allowed by the teacher are all prohibited.

What about Chat-GPT?

Exciting new developments in AI-Machine Learning have resulted in the widespread availability of neural networks that can solve problems for you, write paragraphs or essays, etc. in response to your prompts. These tools are fascinating and deserve to be experimented with! Although this software may serve useful purposes in some contexts, these tools should not be used for generating work you do for this class. Submitting work as your own that has been generated by one of these systems is not permitted, and will be treated as a case of academic dishonesty.

If you have any questions about this policy, the instructor is happy to discuss them with you.

The penalties for cheating vary, depending on the institution, the department, the teacher, and the nature of the infraction. Commonly, a student caught cheating will receive a failing grade on the assignment and be subject to disciplinary action, including suspension and a letter being placed in the student's file. A friend of mine who is a professor states that at her university, there are a total of ten disciplinary actions possible in response to cheating, including: "expulsion, suspension (withdrawal from the University for a given period of time), mark reduction on the assignment or exam, reduction in the final course grade, a grade of F in the course, conduct probation, written reprimand, suspension of any degree already awarded, rescinding any degree already awarded."

Copy-paste is NOT allowed

In your science classes, you use a common lab protocol with the entire class, usually perform labs within a class, and usually share data with at least one other lab partner. When it comes time to report those results, your work is to be completely your own: Your own writing of results, analysis, conclusions, your own calculations, your own percent error, etc. You are allowed to talk to others about your results, and with your lab partner even to talk about your results, confirm your percent error, etc. You should not be "talking and writing at the same time," or copy-pasting results. Your work is your own, and the teacher knows it's not your own by comparing what s/he sees on your paper with what others in the class have done. If the numbers/results are similar, that's as it should be. If the calculations/writing are exactly the same, we know you cheated. It's pretty easy.

In computer science, the temptation to use others' work as a source for your own is often powerful. There are a large number of references readily available on the Internet, and searching for these references is extraordinarily easy. And yet, you mustn't do this!

The purpose of this class is not for you to produce programs. This purpose of this class is for you to learn how to write programs, and you do that, in large part, by developing both your programming and problem-solving abilities. Neither of these are aided, at all, by copy-pasting from code that others have written.

There is a place for copy-pasting in computer science and computer programming, and if you go on to work with computers for a living, you will find yourself using other people's work quite a bit. This class, for the most part, is not about that. This class is about working to develop experience with the fundamental skills of creating algorithms to solve problems.

In introductory physics programs, the professor is not interested in seeing you find answers—the answers to the problems that you're solving are already known! The professor is interested in seeing you develop the problem-solving skills that can be used to produce the answers. Learning how to "think physics" is what those classes are about.

And learning how to write programs is what this class is about.

So... don't copy-paste in here. It's against the rules, and it is of no use in helping you learn programming. Despite my efforts to discourage you from this habit, you may find yourself tempted anyway. Other students in here have been tempted in the past, and they have gotten caught.

Don't be tempted. Copy-pasting is considered cheating—"academic dishonesty"—and is treated as such, with the accompanying consequences: zero on the assignment, meetings with the deans/parents, a letter in your file, etc. You should know that it's enormously easy for me to identify when you've copy-pasted. I employ tools that compare your work with that of other students in the class, and compare your programs with those available online.

Don't do it.

Use your powers for good, not for evil.

SPECIFIC EXPECTATIONS AND CONSEQUENCES AT POLY

Expectations

  1. In an assessment, online or in-class, you will write your own answers without using any notes, preprogrammed calculators or the like, unless you have been given express permission from the instructor to use such resources. Specifically:
    • You will not access another student's work during a test, quiz, or other individual assessment.
    • You will not allow another student to access your work during such an assessment.
    • You will not discuss the test, quiz, or assessment in the presence of any student who has not yet taken it.
    • You will not help any student study for a test, quiz, or assessment which you have taken but they have not.
    • You will not ask other students for information about a test, quiz, or assessment that you have not yet taken.
  2. If you collaborate with other students on a programming exercise, you are permitted to share ideas, algorithms, and specific programming advice.
  3. You are permitted to use the solutions posted on this website for the purposes of better understanding the problem and completing the assignment.
  4. You will not copy-paste code from other websites, other students, or the instructor and submit it as your own code.
  5. Regardless of the type of assistance, each student must physically enter his/her own program via keyboard, test and debug the program himself/herself, and submit his or her own work.

Consequences

If you fail to meet these expectations there will be consequences for you, depending on the severity of your failure. These consequences will include a zero on the assignment, and notification of the incident to parents, deans, and the Upper School Director.

Polytechnic School's Responsible Use Agreement

In addition to these course policies, by using computers and the computer network at Poly you are tacitly agreeing to abide by the school's Responsible Use Agreement, which you are strongly encourage to read and understand. Violation of this policy may result in your loss of access to school technology, which is going to have a devastating effect on your ability to participate in this class! :)