GWU

CS 1111

Introduction to Software Development, Spring 2022

GWU Computer Science

Syllabus

Welcome to CS1111 -- Introduction to Software Development!

This course will teach you how to program, using Java as the programming language. No previous programming experience is required!




Professor: Dr. Kinga Dobolyi

Research interests: Software testing, computer vision and natural language processing for biomedical applications, computer science education

Contact: Please feel free to reach out with any questions you have about the course, whether they are general, or about specific assignments or code! We ask that you use the Ed discussion board first, to get the quickest response (your question may also already be answered there too). Also, we love seeing students in our virtual and in-person office hours, detailed below.


Class Schedule and Office Hours:

Tuesday/Thursday 11:10AM - 12:25PM in MPA 309

Labs:
daytime and locationleadTAs
Thursday
(Sec 31)
6:10-8:00pm
SEH 1300 and SEH 1450
Shivam Shah Ryan Fisk
Kate Halushka
Ryah Carpenter
Shivani Joshi
Monday
(Sec 30 and 32)
11:10-1:00pm
TOMP 405 and TOMP 406
Molly Buckley (TOMP405)
Ryan Fisk (TOMP406)
Aaron Hill
Ryah Carpenter (11:30-12:30)
Shivani Joshi (11:20-12:20)

GTAs (grading of homework, quizzes and projects):
  • Shivam Shah, office hours: typically Fridays and Saturdays -- please see Ed for latest updates.
  • Shivani Joshi, office hours: Wednesdays 10:30am-12:30pm and Mondays 2-4pm on the couches of the 4th floor of SEH.
UTAs:
  • Ryan Fisk, office hours: Mondays from 1-3pm (Tompkins 405/406), and Wednesdays 2-4pm via Zoom
  • Molly Buckley, office hours: Tuesdays 1-3pm and Thursdays 2-4pm on the fourth floor of SEH
LAs:
  • Kate Halushka, office hours: Tuesdays and Thursdays from 10-11am at the SEH 4th floor couch area
  • Aaron Hill, office hours: Tuesdays 3-5pm via Zoom
  • Ryah Carpenter, office hours: Mondays 5:15pm-6:15pm and Thursdays from 9-10am at the SEH 4th floor couch area

Dr Kinga's contact information:
kinga@gwu.edu

Office hours: Wednesdays from 1-2:30pm (you can show up at anytime, no appointment needed!), or email me for an appointment (between the hours of 9am through 4pm Monday through Thursday, schedule permitting, 15 minute appointment blocks). All Dr Kinga's hours will be online on Zoom (due to COVID19) until further notice.

Objectives - In completing this class, students will...

  • Demonstrate familiarity with key concepts in a procedural programming language such as: variables, data types, control structures, methods, input and output.
  • Demonstrate the ability to use programming to solve problems appropriate to a beginning class in programming and software development.
  • Acquire familiarity with rudimentary processes of software development that include: design, coding, testing, and debugging.

Structure - This class is broken into two main activities: lectures and lab.

  • Lectures will explore the main concepts of software development in the Java language, and will include significant portions of in-class programming. Everyone should have their laptops set up and ready to code before every lecture.
  • Labs will mostly be used for graded quizzes, which will be thirty minutes long. Each lab will typically start with a review session (30-40 minutes), followed by the 30 minute quiz.

Prerequisites:

  • None! All are welcome and capable, regardless of previous programming experience.

Responsibilities - Students must

  • Attend all lectures unless you are sick, observing a religious holiday, or there is an emergency (please email the instructor if this happens). Please see GW's policies for religious holidays. We will be grading attendance by having students take quizzes and/or upload exercises they completed (in optional groups) to Blackboard during lecture. See COVID-19 policies below.
  • Interact, ask questions, and generally participate in class discussions during lecture and on the discussion board. Participation points can be earned via discussions on the Ed discussion board, and/or by attending office hours.
  • Complete homeworks, graded lab quizzes, and the final exam individually. All other assignments can be completed individually or in groups.
  • When working with a group, contribute meaningfully and equally.

  • Try it! -- A common question is "will this work?", or "what will happen in this case?". The quickest way to find out is to run the program yourself! It's important to get comfortable with 1) looking at code that you've never seen before, or are not sure about and 2) being able to run it on your own to try to figure out how it might work.
  • Know your sources, and use them! -- The Javadocs webpage is invaluable to find utility methods to use. The syntax of Java is documented in many places online (for free!)
  • Be proud of your code! -- Properly indent it, simplify it where you can to make it more understandable, and comment it where appropriate. You're taking part in an art that most often is shared, and it matters if others can understand your code!
  • Planning is the best debugging! -- You should never jump into code before thinking about it thoroughly. Identifying test cases before you begin writing your code or thinking about a solution is the best way to write corret code quickly. Then, design your programs by breaking them into independently implementable chunks, and write and debug them one by one.
  • Practice methodical debugging! -- Spend time "stepping though" your program, statement by statement to understand the logic behind it, and why it is ending up in a buggy state. Understand why it doesn't work, and use that knowledge to change or even rewrite your program! Be able to debug using tools like the Java Visualizer, as well as by hand on a sheet of paper.

  • Webpage for the course (you are here)
  • Blackboard: we will use Blackboard to upload programming assignments, taking quizzes, and recording of grades.
  • Ed discussion board: Ed will be our discussion forum, the place where instructors will post all announcements, and the quickest and preferred way students communicate with the course staff and each other. Note that Ed allows both public posts (that the whole class can see) and private posts (that only instructors can see). We will make every effort to answer questions within 24 business hours, but usually sooner (often less than two hours during weekdays).
  • Textbook: None required. There are lots of free materials available online, though our lectures notes should also suffice for this course. For an excellent summary and study guide, see these notes.
  • This course requires the use of LockDown Browser for online exams. Before taking a test on Blackboard, download and install LockDown Browser from this link: https://download.respondus.com/lockdown/download.php?id=936940528

Grade Calculation:

  • Participation (via Ed and/or office hours): 5%
  • Lecture participation (via quizzes): 5%
  • Homework assignments: 10%
  • Lab quizzes: 40%
  • In-class project: 15%
  • Final Exam: 25%


Final course grades are calculated as follows:
A (>= 92.0%) A– (>= 90.0%)
B+ (>= 88.0%) B (>= 82.0%) B– (>= 80.0%)
C+ (>= 78.0%) C (>= 72.0%) C– (>= 70.0%)
D (>= 60.0%)
F (< 60.0%)

Late Submissions:

We do not accept any late submissions without prior instructor approval before the deadline (see COVID policies below). However, students will be able to drop their lowest homework assignment grade. You will also be able to re-attempt many lab quizzes for a higher grade (see Schedule). 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) will be required.


Re-grade requests and grades on Blackboard:

It is your responsibility to make sure that grades have been correctly entered in Blackbaord 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.

Participation (via Ed and/or office hours):

You can earn points for either asking a question on Ed, or providing a meaningul answer on Ed. The instructors will signal that a Ed post has qualified for participation points by making a note in the post thread. When providing answers to other students, please don't just give them the correct code (these posts will not recieve participation credit) -- instead, help guide them towards the correct answer. Similarly, posts that just ask for an answer to a coding question will also not recieve participation credit.

Alternatively, you can also attend office hours to earn participation points.

At least three helpful posts as described above, and/or three visits to an office hour session, will earn you the full 5% for participation points this semester.

Lecture participation (via quizzes):

This course will be taught as a "flipped classroom" where students are expected to complete reading at home, and come to each lecture prepared to work on examples.

Most lectures will have a short quiz on the lecture notes/reading (or on homework/project exercises) at the start of class. These quizzes will be completed on Blackboard and will be open for five minutes at the start of class. Late submissions will not be accepted, and we will drop the three lowest such lecture participation quiz scores for the semester.

Homework assignments:

Homework assignments are coding assignments, and will be submitted on Blackboard and graded based on what percent of the provided test cases they pass, as well as use of good coding style.

Lab quizzes:

Lab quizzes and graded and will be completed individually during lab using Blackboard with browser lockdown. Therefore, you need to be comfortable debugging your code by hand; you will not be able to run your code during the quiz. Each lab quiz has multiple versions, and will be selected from a pool of lab quizzes that students have access to beforehand (and we'll spend lecture time going over these). For many lab quizzes, you will have an option to retake the quiz for a higher grade the following week if you choose to do so. Labs quizzes will be graded based on how many test cases they pass. TAs will attempt to modify submitted code for compilation before running against test cases, but it is your responsibility to turn in code that compiles (as you will have seen these problems before). In getting code to compile, TAs will not modify the semantics of your code, just syntax. Submissions with too many syntax errors to correct (at the discretion of the TA) will not be able to be graded against the number of test cases passed, and therefore will recieve a zero (and should be retaken the following week). We will not be dropping the lowest such lab quiz grade.

Project:

We will have an in-class, group-based project towards the end of the semeser that will involve designing and building a program to perform various Natural Language Processing (NLP) tasks in Java on a dataset provided by the instructor (or students may choose their own datasets). 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 instructors 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).

Final exam:

The final exam will be completed on paper during the GWU standard final exam time and day. UNLIKE lab quizzes, the final exam will not be composed of problems that students have already seen during the semester, in an effort to ensure that students are able to successfully code new problems on their own.

Extra credit:

There will be lots of opportunities to earn extra credit this semester:
  • Each time you answer a question in lecture (make sure we ask you your name!) you will recieve extra credit, which will be used by the instructor to adjust your final letter grade by up to two percentage points. We will make every effort to try to call on students by who volunteers first, but we can't guarantee we'll always achieve this goal perfectly (we're human). We will also make attempts to balance who we call on in favor of students who have historically participated less. If you notice a pattern of the instructor not calling on you enough, please send an email so we can fix it going forward!
  • You can also earn extra credit on the in-person project towards the end of the semester, as detailed on the project instructions.

  • At the time this syllabus was written, GWU expects full in-person instruction to resume on January 18, 2022. As circumstances may change depending on university policy, we may have to adjust the delivery of the course to be fully remote, and/or make modifications to accomodate social distancing. In-person groupwork and assessment may no longer be feasible at certain points during the semester. We will publish updates to the Ed discussion board regarding policy changes. The grading of the course should not need to change, though assessments may be moved online if in-person labs and finals are no longer feasible.
  • Instructors and students will need to be flexible regarding unforseen circumstances in terms of absences due to illness and/or quarantine, as applicable. If you are ill, please send an email to the instructor as soon as possible, so we can make sure to connect.
  • Documentation will NOT be required for missing a homework or lab quiz, as we drop the lowest homework grade for everyone, and lab quizzes can already be made up in a following week for everyone in the course. However, if you are unable to attend the final due to illness, a doctor's note (or other university-approved excuse) will be required.
  • We will attempt to have in-person lectures recorded this semester. Lectures that are held remotely will not be recorded.
  • We expect the possibility that many students will have absences due to illness during the semester. Due to the potential volume of these absences, students must be proactive in managing their circumstances by: 1) emailing the instructor before any due dates to request extensions. Doctor's notes are NOT required due to illness to request an extension, as long as the request is made 12 hours before the assignment deadline. Otherwise, a doctor's note detailing the dates of student illness will be required to request extensions 12 hours or less before the assignment due date (or after the assignment due date has passed); 2) Due to the expected volume of late submissions/makeups from COVID19, students turning in late work must follow up with the GTAs to ensure that their work gets graded and recorded on Blackboard within two weeks of the late due date for that assignment. Late work will not be graded/recorded after that deadline.

If you feel pressured about an assignment, please email the instructor instead of cheating. All work that you submit in this course for a grade should be your own as stated above. In cases where group work is permitted, please list all the names of the students you worked with. If we detect cheating, we reserve the right to assign the student a 0 on the assignment, or an F in the course for more egregious violations. We will also be using automated software to be checking for cheating with code that is submitted to us.

You are not allowed to collaborate on and graded assignment unless explicitly told to. Group assignments require collaboration within each group, but no collaboration between groups is permitted. Please refer to the academic integrity policy linked from the course web page. This policy will be strictly enforced: Academic Integrity Policy

If you are a student with a disability and you need academic accommodations, please see the instructor during the first week of class, and contact the Disability Support Services Office (DSSO). All academic accommodations must be arranged through DSSO.

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.

Instructor Communication


We encourage active communication and feedback between the instructor and students!

Please make sure to check Ed at least each weekday, as the instructors will post all important information there about the course (we will not be using Blackboard except for assignment submissions and office hours).

The instructor will also periodically reach out to students via an email check-in; when you get such an email, it doesn't mean you did anything wrong! We simply like to know how our students are doing and feeling as the course goes on, especially if there are things we can help with!

Of course, communication goes both ways: we would love to hear from you at any time during the semester about anything you're stuggling with (or enjoying) in the course -- please do not hesitate to reach out via email (and/or have an office hours session)!


Acknowledgements: thank you to Pablo Frank Bolton for course materials from previous semesters!