Syllabus
Meeting Times and Staff
Instructor
- Instructor: Dr. Kinga Dobolyi
- Email: kinga@gwu.edu
- Prerequisites: CS 1112 or equivalent (See undergraduate curriculum).
Meeting Time and Course Staff
- Lecture: PHIL B156
- Mon. 8AM - 10:30AM with Owen Wolff, Adnan Shaker, Sidra Hussain, and Dr. Kinga (professor)
- Lab
- Mon. 2:10PM - 3:20PM (SEH 4040, section 30) with Owen Wolff, Chloe Truong, and Jett Jacobs (lead)
- Wed. 3:35PM - 4:40PM (TOMP 405, section 31) with Adnan Shaker, Matias Liu Schmid, and Jett Jacobs (lead)
- Wed. 3:35PM - 4:40PM (SEH 4040, section 32) with Lauren Schmidt, Rhys Chambers, and Sidra Hussian (lead)
Office hours
- Owen Wolff (LA): Wednesday 1-2pm in SEH 4040 and Tuesday 6:15-7:45pm in SEH 4th floor couches
- Chloe Truong (LA): Monday 5-7pm in SEH 4th floor couches
- Adnan Shaker (LA): Saturday 10am-12:30pm in SEH 4040
- Matias Liu Schmid (LA): Monday 2:30-4:30pm and Wednesday 11am-12pm in SEH 4th floor couches
- Lauren Schmidt (LA): Wednesday 5-7pm in SEH 4040, Friday 10am-12pm in SEH 4th floor couches
- Rhys Chambers (LA): Wednesday 2-3pm and 4:30-6pm in SEH 4th floor couches, Thursday 2-3pm in SEH 4th floor couches
- Sidra Hussian (UTA): Monday 4-5pm in SEH 4th floor couches, Tuesday 3:30pm-4:40pm in SEH 4th floor couches, Thursday 10:30am-12:30pm in SEH 4040, and by appointment
- Kinga Dobolyi (professor): SEH 4655 Tuesdays from 12:45pm-2:00pm (you can show up at anytime, no appointment needed), Zoom on Wednesdays from 8:45am-10am, or email me for an appointment (between the hours of 9am through 4pm Monday through Thursday, schedule permitting, 15 minute appointment blocks).
Grading
- Jett Jacobs (GTA and grading): jett@gwu.edu (no office hours)
Course Details
Course Description
In this course, students will learn how to write object-oriented code using Java. Concepts will focus on object-oriented thinking, software composition, inheritance and polymorphism, unit testing, and design patterns. Programming techniques, assignments and lab exercises will focus on Java, specifically, the language and its core libraries. The course will be conducted lab-style with a mix of lecture, lab assignments and projects. There will also be an open-ended groupwork assignment at the end of the semester.
Learning Outcomes
By the end of this course, students will be able to:
- Practice advanced software development with large projects that involve multiple classes, encapsulation, inheritance, and polymorphism.
- Understand programming language features such as interfaces, abstract classes, generics, and their underlying representation in memory.
- Experience GUI design and implementation
- Practice basic networking and IO programming
- Develop an understanding of software engineering principles
- Develop an understanding of unit testing
- Demonstrate skill in problem solving by going from complex word description to implementation.
Textbook and Resources
There are NO REQUIRED textbooks for this course. Instead we have a list of recommended resources for you to reference in addition to the course notes provided for you. These include:
- Learning Java, 5th Edition by Marc Loy, Patrick Niemeyer, Daniel Leuck
- Head First Design Patterns, 2nd Edition by Eric Freeman and Elisabeth Robson
- Head First Java by Kathy Sierra and Bert Bates, published by O’Reilly (2nd edition)
- Java in a Nutshell, by David Flanagan, O’Reilly Publishing. This book is a handy reference that contains a (rather terse) overview of the language, tools and API’s. Initially, a beginner will find it difficult to read, but it’s probably the only book you will continue to use even after becoming a Java expert.
All books listed here are available for free via Safari Tech Books via the GWU library. Just create an account with your GWU email. You can also find a ton more books and resources there.
Workload
Expected time commitment
The GW standard is that one credit hour corresponds to a minimum of 50 minutes of instruction plus 100 minutes of independent learning (e.g., homework and exam prep) per week. This is a 3 credit course, thus you should expect to spend 2.5-3 hours in class and 50 minutes in lab, plus four to five hours of independent learning per week, which may include completing programming assignments.
The amount of time you spend per week may be more or less, depending on the topic and the current assignments, but you should set aside time to complete your work for this class, both during lecture and out.
Programming Expectations
The course will be extremely programming-intensive. You should be prepared to spend most of your out-of-class and in-class time writing and designing software. You will be submitting one lab assignment, on average, per week, and three projects due throughout the semester. You should also be completing your self-check worksheets assigned for each lecture.
Having completed the pre-reqs, you are expected to submit well-written code:
- Comments must be substantive.
- Select readable variable names and method names.
- Use consistent indentation (preferred: two or four spaces).
- Submit code that compiles (non-compiling code will not be graded).
- Additionally, your code should be compile in a standard, pre-described way for the class (e.g.,
javac
without additional libraries, except perhaps the final project).
- Additionally, your code should be compile in a standard, pre-described way for the class (e.g.,
- Be able to describe and answer questions about your code when prompted.
Grading
Grading Breakdown
- 8%: Self-Guided Worksheets 0 - 7
- 1%: Lab 0
- 20%: Labs 1-4
- 30%: Projects
- 40%: Exams (2x 20% each)
- 1%: Participation/Attendence
Self-Guided Worksheets
Each lecture will be accompanied by a self-guided worksheet. This worksheet is to complement in-class content and to assist you in reviewing the material. Worksheets are not graded for accuracy; instead, you attest that you have completed the worksheet. Worksheet completion is expected by the Sunday following Monday lecture. Note that Worksheet zero is an exception; it has a grading rubric that is NOT based on completion.
Labs
Labs are short-to-medium size programming assignments that are designed to reinforce lecture and prepare you for projects.
Projects
There are three projects for this class. They are a substantial amount of work.
Exams
There are two non-comprehensive exams in this class during the semester, each worth 20% of your grade.
Participation/Attendance
Participation is worth 1% of your grade. You earn participation credit by attending lecture for the full lecture period.
Re-grade requests and grades on Blackboard
It is your responsibility to make sure that grades have been correctly entered in Blackboard in a timely manner. Please make sure that Blackboard reflects your correct scores within two weeks of an assignment due date; we will not adjust scores after this deadline.
Please be aware that Blackboard does not weight overall course grades correctly. You can calculate your grade in the course at any time by referring to the raw scores on Blackboard, and using the weights above to calculate your grade in the class.
No assignments will be accepted for re-grade requests after final exam grades have been recorded in Blackboard.
Submission/Late Work Policy
We do not accept late work in this course. If you have a reason you need an extension (illness, unplanned emergency, etc.) please email the professor at least 12 hours before the deadline. Extensions will be offered at professor discretion. Delayed flights, vacations, and being busy with other courses are not accepted as excused absences.
If you are unable to attend the final due to an unforseen event like an illness, a doctor’s note (or documentation for another university-approved excuse and instructor discretion) will be required to qualify for a makeup.
For any extension and/or retake, a doctor’s note (or other university-approved excused absence and instructor’s discretion) is required to qualify. At-home COVID test results and self-diagnosed illnesses will not be granted extensions and makeups. The doctor’s note must specify on which days the student is excused from attending class in order to qualify for an extension.
Class Communication
We will use two primary forms of communication in this class: email announcements and Ed. You are responsible for remaining up to date on any information sent by email or posted to Ed. This may include clarifications to assignments, updates on grading rubrics, and changes in office hours.
For all general course information, questions, and clarifications, you should preference to using Ed. An instructor, TA, or even your fellow classmate can then answer a question. You can even post your questions anonymously.
If you have personal, individual issues you’d like addressed, you should send those by email to the course instructor. However, all course related topics should be directed to Ed.
Please allow instructional staff 24 business hours (M-F from 8am-4pm) to respond to email and Ed messages. A message sent on a Friday afternoon may only be answered on a Monday. We can often reply much more quickly, but please do not wait until the last minute to ask your questions and/or start assignments.
We also have an anonymous feedback form available for students in this class.
Professionalism
Students are expected to treat each other, the TAs, and the instructor professionally both in-person and in online communications and work. If unprofessional behavior is observed, a student will first receive a warning. Afterwards, their final grade in the course may be reduced up to 5% (as a loss of the participation points this semester) for additional acts of unprofessionalism.
Unprofessionalism covers activities (or lack thereof) on the group project this semester (see below).
Course Policies
Academic Integrity policy
It is very important in this course (and in life), that your work be your own. These guidelines will help you achieve that.
You must:
- Do your best to solve all homework, quizzes, projects, labs, and exams on your own.
- Write the names of any students you collaborated with as a comment at the top of your main/README file (subject to the constraints below).
- Notify your instructor if you are using a tutor (this is not a problem, just let your instructor know).
You may:
- Discuss general approaches to solving the homework problems with other students, but the pen-to-paper, fingers-to-keyboard work should be your own.
- No! You may not collaboratively write a homework answer and write your names on it and turn it in.
You may NOT (except for the group project):
- Copy code to or from other students or people outside of the class.
- Have another student look at a specific snippet of your code (e.g., 10 lines) to help you debug a programming error.
- Have someone else write code for you.
- Copy code from the internet, unless you specifically reference the source and can explain how it works. This should be a tiny minority of the code you submit.
- Write code as a group and then submit identical or slightly modified versions – if you discuss general approaches to solving a problem together, you still must be writing up your own independent solution.
The Academic Integrity Code will apply to this course. Please read through the code carefully. Penalties for violating the code or the policies described here include failing this course, and are elaborated in the GW Academic Integrity Code. Note that the minimum punishment is failure of the assignment. Additional actions could include failure of the class, suspension, or expulsion.
Please note that in the context of this class, all projects and labs are considering programming/coding assignments. Many actions fall under the "You may NOT" list above
Groupwork
We will have an in-class, group-based project towards the end of the semester. The project grade will be based on what the group produces. For example, if all team members feel their teammate contributed equally, that teammate recieves all the points for the project earned by the groupwork. If the team feels that a teammate only contributed 50% effort, that teammate will recieve only half the points of the project earned by the groupwork. Please email the instructor ASAP if you or your team are having trouble with your team members, so we can make arrangements to monitor and resolve the situation (which may involve breaking up teams). Groupwork disputes will be resolved using git logs only.
Please visit the CS department’s JEDI student resources page for information around Justice, Equity, Diversity, and Inclusion resources as these may pertain to groupwork situations in our class.
Use of Electronic Course Materials and Class Recordings
Students are encouraged to use electronic course materials, including recorded class sessions, for private personal use in connection with their academic program of study. Electronic course materials and recorded class sessions should not be shared or used for non-course related purposes unless express permission has been granted by the instructor. Students who impermissibly share any electronic course materials are subject to discipline under the Student Code of Conduct. Please contact the instructor if you have questions regarding what constitutes permissible or impermissible use of electronic course materials and/or recorded class sessions. Please contact Disability Support Services if you have questions or need assistance in accessing electronic course materials.
Some videos will be shared on password protected links. You should not share the passwords beyond this class or download and share those videos with others. This is a violation of the privacy of your fellow students and could lead to disciplinary actions on the Student Code of Conduct.
University policy on observance of religious holidays
In accordance with University policy, students should notify faculty during the first week of the semester of their intention to be absent from class on their day(s) of religious observance. For details and policy, see Religious Holidays on the Provost web page.
Disability Support Services (DSS)
Any student who may need an accommodation based on the potential impact of a disability should contact Disability Support Services (or call 202-994-8250) to establish eligibility and to coordinate accommodations.
Safety and Security
• Monitor GW Alerts and Campus Advisories to Stay Informed before and during an emergency event or situation
• In an emergency: call GWPD/EMeRG 202-994-6111 or 911
• For situation-specific actions: refer to GW’s Emergency Response Handbook and Emergency Operations Plan
• In the event of an armed Intruder: Run. Hide. Fight.
Diversity and Inclusion
It is our intent to present materials and activities that are respectful of: age, race, ethnicity, country of origin, language, religion, spiritual practice, sexual orientation, gender identity or expression, introversion/extroversion personality dimensions, and socioeconomic and mental/physical status. All people have the right to be addressed and referred to in accordance with their personal identity. In this class, we will have the chance to indicate the name that we prefer to be called and, if we choose, to identify pronouns with which we would like to be addressed. I will do my best to address and refer to all students accordingly and support classmates in doing so as well.
For more resources, see the CS Dept JEDI homepage.
Acknowledgments
The material for this course comes from previous iterations taught by Prof. Aviv. Thank you.