MCS-178: Introduction to Computer Science II (Spring 2023)

Overview

In this course, we will continue sampling the perspectives and methods of computer science. The first and most apparent difference you will observe is the change in notation for expressing algorithms, namely Java instead of Python. Although there will be some review of elementary matters in order to get you up to speed in Java, a major focus of the course will be the use of object-oriented analysis and programming, and we will try to get there as soon as possible. Along the way, we will develop tools to analyze the efficiency of algorithms, methods for writing more efficient algorithms, and ways to write more complicated data structures. This course will involve much programming, since I view this as an important way for you to understand the topics we will be studying. Furthermore, I will give you a broad range of programs from many disciplines, since I believe it is important for computer scientists to apply their knowledge to other areas. Finally, I will give you a brief introduction on the software development process.

Instructional Staff and Contact Information

Professor Louis Yu will be the classroom instructor and Jeff Engelhardt will be the lab instructor for this course. For more information on our availability, please see our contact info.

World Wide Web

All course materials will be available on the course website and on Moodle. The URL for the course is http://homepages.gac.edu/~lyu/teaching/mcs178-s23/.

Textbook

Our main textbook is Introduction to Programming In Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne. The textbook authors maintain a website for the book at http://www.cs.princeton.edu/IntroProgramming. I will also teach various topics based on my own notes. In those cases, the corresponding reading is indicated on the schedule as "notes".

Class and Lab Formats

There will be in-person lectures on Mondays, Wednesdays, and Fridays from 9am - 10am in Beck Hall 301. In some cases (for example, if I get sick) lectures may be online (via ZOOM). I will make an annoucement in class in those cases and send out an email to you. The labs will be on Tuesdays and Thursdays during the time slots in which you registered. The labs will be held in-person in Olin 326. There will not be an online option for labs, so attendance is important.

Class and Lab Attendance

The attendance for all lectures and labs are required. I will be recording attendance at the start of each lecture and lab and they will be worth points in your final grade.

Everyone will start with 5 points of attendance grade at the beginning of the semester (attendance is worth 5% of the final grade). During the semester, points will be deducted according to the following:

  1. If you miss either a lecture or a lab session without notifying me and receive an approval, I will make a note of the absence. Please note in your notification, the reason for missing a lecture can be simply "I am feeling overwhelmed and need a mental health day" (as mental wellbeing is important).
  2. If I noted that you had missed labs or lectures twice, you will receive one point deduction. In general, if you plan to miss a lecture or a lab, you should email or talk to me within 24 hours of the cooresponding lecture or lab and receive an approval.
  3. Similarly, if you show up more than 10 minutes late to a lecture or a lab (in-person or virtually), or that I feel you are being disruptive in class, I will make a note of it. Two such cases will result in one point deduction.

Should you need to miss a class or a lab for any reason, you are still responsible for the material covered in there. This means you will need to make sure that you understand the reading from that day; you should ask another student for the notes from that day, and you should make sure that you understand what was covered. If there is a project or homework due that day, you should be sure to submit it (electronically) on time (thus, do not leave your projects or homework to the last minute). If you did not come to the lecture during which I have given out a homework problem, you are still responsible to check for them yourself on Moodle, do them, and submit them.

If you have influenza-like symptoms (temperature over 100 with headaches, sore throat, or cough), please call Health Service. If they say that you stay home, you should do so, and I request that you email me as not to receive any deduction on your attendance grade.

Projects and Lab Days

For this course, you will need to complete 7 projects. In each case, I will indicate what I expect of you. A project report that meets those expectations is due before the start of class on the date specified. If you submit the report late, your grade will drop 5% per day late or fraction thereof (with the exception of the last project, in which no late project will be accepted). If you are too sick to complete a report on time, you will not be penalized. However, you need to talk to me or email me as soon as possible, and recieve an approval from me. Other circumstances will be evaluated on a case-by-case basis. In general, you should talk to me or email me (asap) around the time of the incident.

On Tuesdays and Thursdays, we will meet in the OHS 326 computer lab. One or more of those lab days will be provided for you to work on each project. However, you will generally need to spend additional time on the project outside of class.

Some lab days are not for project work. Instead, the syllabus lists a topic from the textbook with the prefix "In lab:". On these days, I will be covering material from the book, somewhat like on a class day, but in an environment where I can ask each of you to try things out on your individual computers. For each of these days where a textbook topic is covered in the lab, the same topic is listed on the following class day. We will have this extra class time to go over the topic some more if you need it. Any remaining time will be available for us to talk about topics that are not in the textbook.

Tests

There will be three intra-term tests during the semester (please see schedule for details). If you have a conflict with a testing time, please contact me as soon as possible to make an alternative arrangement.

Each intra-term test consist of two parts: a written part and a programming part. In general, the written part will be held during lecture time and the programing part will be held during lab time (with the exception of the last test where the written part and the programming part will be held together on the last day of class). Please see the course schedule on when each part of the intra-term tests is scheduled.

Effort

For this course, ideally your grade should be a reflection of the effort you had spent. At the end of the semester, if you tell me that you have put in a lot of efort but you recieved a bad grade, I will ask you the following: "did you attend all the lectures?", "did you attend all the labs?", "did you pay attention in classes?", and finally, "did you take advantage of the overabundance of help offered to you?". If your answer to any of those questions is "no", then you did not put enough efforts into the course.

Please keep in mind that there is no such course which allows you to miss lectures, labs, projects or homework, but somehow miraculously implant the necessary knowledge in your head; no matter how "good" or "bad" the course is. Academia demands decipline.

Bonus Points

For this course, I encourage questions, discussions, peer-helping, and explorations. So, I am bringing back the bonus point system. During the semester, you are strongly encouraged to ask questions (during or after lectures) and to take part in discussions. If I feel that you had made a good contribution, you will recieve one bonus point.

Another way of earning bonus points is for you to take a leadership position during group work or classroom coding exercises.

Finally, you will earn bonus points if you have ideas about extra work (such as open questions) you can do and have done them outside of class. You can talk to me about what you had done and show me your work. I will give you bonus points accordingly.

The maximum amount of bonus points per student is 12. They are worth 3 percent of your final grade. That is, if by the end of the semester you had received 12 bonus points from me, you can raise your final percentage by 3%.

The Bonus Points System on Tests

It should be very clear to you that there is help available most days of the week (from either me or the tutors). You are just an email away from arranging a tutoring session with me or the tutors at a time which works for you.

What's more, it should be clear that class attendance in this course is important; you should always make a true effort to attend lectures and labs.

To help keeping track of the effort you had put into the course, you can earn 2% bonus points on each test by doing the following:

You can earn another 2% bonus points on each test by doing the following: