COMP 170 Spring 2019 Syllabus

Introduction to Object-Oriented Programming (in Python, then Java)

Home page: http://anh.cs.luc.edu/170

Contacting Your Course Instructor

Dr. Andrew N. Harrington
The phone number is fine for talking to me when I am there, but please leave personal messages for me on email, not voicemail.

The course TA is Julia Adamski, Loyola ID: jadamski. COMP 170 office hours: Monday, 12:00 pm – 2:20 pm (Location: Doyle 214: conference room)

Textbooks

We are starting off with http://runestone.academy/runestone/books/published/foppluc/index.html. This is a wonderful free (creative commons licensed) online text that I have been contributing updates to. You can get started programming and test yourself entirely in the browser. Do be sure to log in so a history of your work is kept for you!

Note: When you first log into the Runestone site, you are asked for a textbook name: It is foppluc.

We will follow with a transition to Java in another text on that same site: http://runestone.academy/runestone/books/published/java4python/index.html, plus extra notes of mine.

You can use these texts and their server support for free, but they are not free to the server support and development team. Think what you pay for commercial texts for computer science, or particularly biology! Please encourage this sort of a system by making a small contribution, like $10 or more. There is a Donate link of the page https://runestone.academy/runestone/default/user/login. Creative Commons licenses are great! AND they need support.

Prerequisite

You should have had the equivalent of Math 117 (algebra/trig) or Comp 163 (discrete math) or Comp 150 (a bit of simple programming) with a B grade or better. No prior programming experience is required if you are comfortable with a math prerequisite option. We will do simple arithmetical calculations. The logical mindset of mathematics is very useful, and a comfort with symbols, not a head full of formulas.

Overview/Outcomes

This is a new version of Comp 170, which starts with Python and ends up in Java. We will see how much easier it is to start with Python. Most of the desired outcomes are language independent, and you will get them from Python more easily than from Java. The transition at the end of the course will also put them in terms of Java. The ending goals and outcomes are summarized in the top 10 topics. If you already studied introductory Object-Oriented Programming, and think you may not need this course, be sure to examine the the top 10 topics, and consult with me.

Overall in this course you need to learn

Getting the syntax of Java after Python should not take long, and the concepts go over quite easily, so to get more practice in Java, we will spend more time on creative solutions in Java after concentrating on basic ideas in Python.

Piazza

Piazza is an online learning community - social media for a course. It has been used very successfully by tens of thousands of students.

You encouraged to pose questions and offer answers to others there.

Entries in Piazza come in several forms: general comments, questions, answers, discussion on an issue with a problem, edits to previous entries (this is a wiki), and polls. Entries can be directed privately to instructors (the TA and me) or to everyone.

It is a wiki which means it as a shared, editable space: If you think you can improve something posted by anyone, change/edit it.

Be careful with questions and comments that would help with a homework problem: If you post for everyone to see, the entry needs to be general or conceptual enough not to give away solution details. Do look early at the homework, think, and post such questions, to get early help! If you have a question that is directly related to a solution you are thinking of, it should be a private communication for instructors.

Here are most suggestions on using the individual types of Piazza contribution:

General Comments

Here are some ideas:

  • If they are not giving away a part of a homework/lab problem, they can be anything useful to the general community.
  • Requests for special emphasis in the next class make sense to go out to the whole class, too. After an initial request, "me, too!" additions are very helpful for me to plan how to make class time best support you!
  • If you found a good web site that addresses a course topic in a way that you like, post the URL with a comment.
  • Of course you can always give your own direct comments!
Questions
Other than the restrictions around specific assigned problems, use this community for help. We will discover more ways as we go along! Do organize your materials so you know where to look first for resources. Be aware of the recent course reading and topics. Go to the community second.
Answers
This is a wiki. One latest version appears directly, though the earlier wiki history can be viewed. Be helpful. It is particularly important in your learning to read critically. If you can improve an answer, edit it!
Discussion on a question
There is a provision for discussion of issues separate from answers. If the issue is resolved, the issue can be marked closed (but it is a wiki - it could be reopened by someone else).

Suggestions for optimizing the use of our class Piazza site are highly encouraged.

Communication

Communication is encouraged through Piazza, particularly for content that might resonate with others in the course. Make sure you log in and give it your preferred email address. I will generally send announcements through Piazza, so I strongly suggest you set up Piazza for frequent updates via email. I may occasionally send a very important note and override your email preferences, so you get notified immediately.

Be careful with public questions and comments that would help with a homework problem: The entry needs to be general or conceptual enough not to give away solution details. Do look early at the homework, think, and post such questions, to get early help! If you have a question that is directly related to a solution you are thinking of, it should be a private email communication for instructors.

I will use this group for general announcement/corrections for the class.

Feedback and Questions

Please let me know, in person or via email to me, when you need something from the course that I have not thought to include, or not included in sufficient detail for you, or not presented from a point of view that you can follow. We are in this together. For me to succeed, I need you to succeed. Students come in with enormously different backgrounds. I routinely give each person individual attention at whatever level is appropriate at the moment.

For course content questions that you do not address in person, and might get help from someone else in class, feel free to post to Piazza.

You should be looking to help others, too: besides being good for the community, it is good for your grade. You are NOT graded down for expressing needs for help: to be clear about where the holes are in our preparation and to be proactive are positive. Lots of people have lots of questions about this course. Lots of topics need to be spiraled through, with more questions and a bit more understanding in each pass. Do not be shy with questions!

Course Materials Locations

Beyond the text, there are three locations used by the course:

  • The basic public course materials will all be posted directly on the web under http://anh.cs.luc.edu/170.
  • Announcements, comments and question supporting your learning will appear in the Piazza.
  • Some private information between professor/TA and individual students will be handled through the University Sakai system. It will mostly be used for grades and homework submissions.

Exams

Schedule

See the course schedule.

Tentative in-the-classroom exam dates are shown in the course schedule and also below.

Friday February 15, March 15
Final exam: Monday Apr 29 9-11AM

Tjhe first two exams will start in the regular class period, and most students should finish during that time, but I do not want to base grades on speed, so you may continue into the official "lab" time.

Exam coverage

Exams will cover material discussed in class, reading material in the text and on the web, and assignments. Exams will always be cumulative, but they will NOT include new material from the two class immediately before the exam. This way there will always be time for questions after digesting a class.

Grading

Do not write down things on exams that you can see are incomplete or incorrect without making some comment acknowledging this -- it is better to know you are wrong than to be wrong and think you are right.

Missed Exams

If you must miss an exam, let me know well in advance. Then if you have a good reason we can possibly make other arrangements. I have little sympathy for people who inform me after the fact for no good reason. I may completely excuse you from an exam if you were sick or unable to attend for long enough. Most often if you cannot take an exam at the usual time, I will want you to take it a little later, BUT I WILL NOT LET ANYONE TAKE A LATE EXAM AFTER THE NEXT CLASS PERIOD. If you somehow fail to let me know in a timely fashion that you have an excuse and want to take the exam late, appear at my office before the NEXT class after the exam, and I may be able to give you the exam.

I reserve the right to request documentation about illnesses and "emergencies" that arise, especially in the case of repeated absences.

No Do-Overs

If you have an excuse for not being prepared to take an exam, but decide to take it anyway, you don't get to change your mind after you see a poor grade. Being sick is not a way to get two chances. In certain circumstances I may allow you to delay an exam due to illness, but I will not let you be reexamined due to a poor grade.

Class periods

This class starts and ends the semester meeting in a Cuneo classroom. In the middle two months it is online in Zoom. We will likely practice in Zoom a bit beforehand.

The Cuneo classroom is NOT a lab, so bringing a notebook computer is important. It could possibly mean sharing your partner's, or checking one out from the IC. It will certainly be most convenient if you can work on your own computer consistently. For the time we do Python through the browser, it could even be something like an iPad, though for later separate projects, a notebook computer is important.

Of course you need to be on a computer for online classes. If several people are together physically, with more than one computer, be sure JUST ONE computer has microphone and speakers turned on. A microphone is important. A camera is not required. We will share screens. There is information on Zoom at https://luc.zoom.us.

I will tend to take questions (immediate, or earlier entered in Piazza), to address issues, present a context for the next reading/viewing assignment and emphasize learning to use the new concepts creatively. The main way for you to use the new ideas creatively is to do your written work! Most class time will be spent letting you engage with the work while getting individual help as needed. Information and activities in class that are not in the book will be on exams and used in homework. I do not formally count class attendance, but I strongly recommend that you be there to start your path in computer science well. Always check in with your partner or other classmate if you miss class.

Due to registrar conventions, a separate class labeled "lab" is on Friday. For us, all classes will generally run in about the same manner, just longer on Friday.

I am very happy to give extensive help outside class to people who attend class. If my first pass on an idea was not enough for you, we can do better together in pass 2, and maybe pass 3 if needed, .... I am much less enthusiastic explaining what has already happened in class to a person who is frequently absent.

Sometime outside life may intervene, so you are not prepared ahead far enough on the reading/viewing to continue on your written creations. You can generally use the time in what ever way is most helpful to you at the moment, and that may be to catch up on reading/viewing, with the advantage of help right there if you have questions. This is not in general the highest value use of class time, but may make sense in special instances. If you plan to view videos, be sure to have and use earphones, so not to interfere with classmates.

Face to face and online classes will have about the same contents. Technically they will be somewhat different! Online, instead of displaying the screen on a projector, I will share mine with you in Zoom. When working with individuals or pairs, we will split into "breakout rooms", and anyone in the group can share their screen when it would be helpful.

You can also use Zoom to work with a remote partner on homework, or have a discussion with me or the TA outside of class.

Pair Programming

A recent paradigm shift in professional programming has been Pair Programming: two people collaborating on one problem on one computer. This has proven to be more efficient than each doing separate parts independently and merging them, particularly when error fixing time is included. More recently this approach has also been used in classes with completely new student programmers. Not only have the individual projects been done better with more confidence, but also students have learned at least as well and had more enjoyment in the process. You are encouraged to do pair programming in this course for assignments, and you are encouraged to work in pairs on your parts of the final group project within overall teams of around 4 students. (Your exams will NOT be in pairs however!) Read the page on how to make pair programming work. Things do not always go as planned. In case your pair programming ever breaks down, also see administrative guidelines for pair programming.

Online Class Recording

The statements below are required by law. You may see exactly the same statements in other courses that may be recorded. I do plan to record the whole-class presentation/discussion using Zoom, and follow the rukes below:

Syllabus Statement: In this class software will be used to record live class discussions. As a student in this class, your participation in live class discussions will be recorded. These recordings will be made available only to students enrolled in the class, to assist those who cannot attend the live session or to serve as a resource for those who would like to review content that was presented. All recordings will become unavailable to students in the class when the Sakai course is unpublished (i.e. shortly after the course ends, per the Sakai administrative schedule). Students who prefer to participate via audio only will be allowed to disable their video camera so only audio will be captured. Please discuss this option with your instructor.

The use of all video recordings will be in keeping with the University Privacy Statement shown below:

Privacy Statement: Assuring privacy among faculty and students engaged in online and face-to-face instructional activities helps promote open and robust conversations and mitigates concerns that comments made within the context of the class will be shared beyond the classroom. As such, recordings of instructional activities occurring in online or face-to-face classes may be used solely for internal class purposes by the faculty member and students registered for the course, and only during the period in which the course is offered. Students will be informed of such recordings by a statement in the syllabus for the course in which they will be recorded. Instructors who wish to make subsequent use of recordings that include student activity may do so only with informed written consent of the students involved or if all student activity is removed from the recording. Recordings including student activity that have been initiated by the instructor may be retained by the instructor only for individual use.

Programming Environment

We will be programming first in Python and later in Java. Python is a great first language. It lets us see and understand the central concepts in programming without a lot of distraction from boilerplate and complicated syntax. It is particularly easy to start with Python, totally in a browser, using http://runestone.academy/runestone/books/published/foppluc/index.html

For later more advanced work, after you are used to Python, you will probably use a free development environment like PyCharm CE (Community Edition), https://www.jetbrains.com/pycharm/download -- Choose the free community edition, which includes the latest version of Python: 3.7.

Amazingly Python is simultaneously a great starting language AND also one of the most used languages by professional programmers, but it is not always the most useful paradigm. Another much used language, with a few distinctly different design considerations, is Java. Most general programming concepts will correspond directly. Much syntax will be almost identical; some will require more translation, and we will emphasize the few new ideas in that paradigm.

Initially you can write code directly into the online text http://runestone.academy/runestone/books/published/java4python/index.html and run it there, but we will soon switch to a free full development environment like IntelliJ IDEA, https://www.jetbrains.com/idea/download -- Choose the free community edition. This needs the latest version of Java, choose JDK (not JRE) download button and then select the version for your machine. Be sure to accept their license agreement.

At this point I am planning to allow your final project to be in either language. Java will be the language of instruction for the following course, Comp 271, and Java will be the language on the final exam.

Campus Network, Rights and Responsibilities: As a user of the campus network, you should be aware of your rights and responsibilities in at ITS Acceptable Use Policies

Programming and homework assignments

Your go-to page for administration during the course is the course schedule showing reading and programming assignments, and class activities. Be sure to keep checking it.

The assignments will be based mostly on assigned reading material. Sometimes I will add a bit new in class. The questions embedded in the main flow of the text (not in specific sections named Exercises), usually related to what was just introduced, and are best done right away, as you read, to see that you are getting the basic ideas. These are not listed in the homework directly -- they are assumed as part of the reading assignments. I also list assigned problems, many for the Exercise sections, mostly at the ends of chapters. Some of those are more elaborate, and may take longer to sink your teeth into. Do generally make sure you have first gone through the chapter contents that come beforehand, including the embedded questions.

To keep up with this class, please start early enough to have time for all this before the due date, if possible. You will have major problems later in the course if you get much behind. You may work with your pair partner on the details of the assignment. Working on programming problems is essential to your understanding of the course material, preparing for exams.

Homework that is not saved by the textbook server is turned in using Sakai. For much of the time on Python, just entering solutions into the browser (if you are logged in!) is sufficient. Larger assignment files are due at the end of the date specified unless otherwise stated (well, the latest Sakai goes is 11:55PM). Assignments should be turned in on time, running correctly. The running correctly is very important! You are going to lose a lot more on your grade for having it not work than for spending another couple of days and getting the help you need. Please start early enough to have time for all this before the due date. See the next section for late assignment policies. You may only work with your pair partner on the assignment, and NOT work with other students - see the section below on Academic Dishonesty. Working on programming problems is essential to your understanding of the course material and will not only be a direct part of your final grade, but will also strongly affect your exam performance.

You are not required to come to classes in general, but if you are not there fairly regularly, actively doing your assigned work, then after you turn in an assignment, I may require you to make an appointment to go over your homework with me in some detail in my office or online.

Late assignments

In this class the following lateness penalties apply to the individual programming assignments: Assignments turned in up to one week late can receive a 10% penalty. I may cut off acceptance after a week. If there is some special reason for an assignment being turned in late, preferably speak to me directly first. I will consider reducing or eliminating the penalties. If I accept your reason, ALSO make a comment at the top of your source code in the main program. (This reminder helps!)

Do not submit something just to be on time that does not compile and run correctly. The penalties for a non-working program are much greater than for being a bit late.

Final Group Project

You will also be assigned to groups of 3-5 for a large open-ended project (for instance writing a game and its instructions and other documentation), that should be assigned after the second exam and should mostly consume the last third of the course, in class times and out of class. This will provide quite a different experience from the more highly specified individual assignments earlier in the course. Your group will be expected to turn in an intermediate version part way through the project, and you can use the feedback you get to make sure you are on a successful track for a final submission. Each team will present their project in part of the last regular class/lab, and then we can all test other teams' projects!

At the end of the project, I will ask each team member separately and individually to turn in a form identifying the principal individual contributions of each member of their group.

Extra help

Learning is a spiral process, and different people need to take different sized steps at different times. Self dependence and stretching yourself are great, but this only goes so far. Take advantage of the resources provided when you need them.

  1. Please take advantage of the Pair Programming. You and your partner may complement each other very well.
  2. I welcome questions inside class, in regular office hours, or by arrangement at other times.
  3. Use Piazza.
  4. Our TA will have some office hours.
  5. When the TA and I am not available, and you want face-to-face help, please visit the Computer Science Department tutors. They have scheduled times all through much of the week. Also, you might try visiting several tutors: Some may fit you better than others. See the tutoring schedule. Hopefully this is set up by the second week of classes. Tutors should also let you know how they can be reached online.

Grading

Grading Categories and Weights
Category Weight
Exams 1, 2 15% each
Final Exam 20%
Homework 30%
Final Project 20%

Exams may be scaled/curved. I will use the scaled scores in my spreadsheet when calculating final grades, but I will only post raw scores in Sakai. I convert the numerical grade from the final weighted average to course letter grades with the following minimum requirements:

A 93, A- 90, B+ 87, B 83, B- 80, C+ 77, C 73, C- 70, D+ 67, D 60.

If you have consistently displayed more knowledge, ability, and interest in class discussions and in Piazza than you show in your exams, I may raise this grade.

Academic Dishonesty

The penalty for cheating may be anywhere from a 0 on an assignment to a grade of "F" in this course. The appropriate dean will be informed in writing of all cheating incidents.

I expect you to work on the questions embedded in the text by yourself or with a partner. These are not included here, partly since answers are generally already given! This is more about separately assigned, bigger assignments and exams.

Cheating consists of, but is not limited to:

If you are working on a pair or group project, an "outside person" only refers to people other than your assigned partner or team. Note that cheating goes both ways: both giving and receiving.

Consultation is allowed with me, the TA, or official Computer Science department tutors. If you consult with any of these people, still make a comment at the top of your work about the substance and depth of the help. Hiding such help is also academic dishonesty.

Help from any source is fine concerning

Cell Phones

I assume that my class is not the most important thing in your life. Only you know the relative importance of any particular connection through your cell phone, and whether it is important for you to answer a call immediately rather than later. I do want you (and me!) to be respectful of my class and disrupt it as little as is practical. If you get cell phone calls with fair frequency, be sure to have the ring muted (use vibrate mode) before coming to class. If you rarely get calls, you might not mute it ahead, and your cell phone may happen to ring. Get rid of the noise as soon as possible, and do not get flustered. I assume you will move outside the classroom for a conversation. If you get fairly frequent calls that you are likely to consider important answering, sit in a place where your exit and re-entrance are as unobtrusive as possible.

Questions and Feedback

Please contact me if you have questions about these ground rules or about anything else in the course. After class, by email, in my office, by phone, all work for me. I am here to help. On account of my GPD work, I generally have Skype running, ID: gpd.cs.luc This also allows screen sharing, like Zoom.

It is very important that you keep up. Let me know when you need help!

I look forward to working with you.