GWU

CS 1111

Introduction to Software Development

GWU Computer Science

Class Information


Latest Announcements

Important notes from Piazza will also be placed here

01/04 Booking OHs


Information

These sections contain information about how the class is run

Professor: Pablo Frank Bolton (pfrank at gwu)
Research interests: Human-Robot Interaction, Robotic Perception, STEM education
Contact for Class stuff: Use Piazza first (see Course Materials), otherwise, reach out on office hours if possible. If you must, you can also email me.

Office Hours: Open and Thematic, on Thursdays 7 PM to 8 PM Online: Blackboard Collaborate Ultra.

Office Hour Rules:

  • Office Hours are Thematic, that is: we focus on concepts and high-level issues, not on individual issues with your code. If you have a conceptual or practical question that applies to the class as a whole, please bring it here. Otherwise, seek individual help with the other TAs.
  • We'll use the Main Course Room in BBUltra as a waiting room and we'll use a breakout group for any private help sessions.
  • Show up 5 minutes early.
  • Have your question(s) ready and all materials ready so that when you share your screen we can quickly see the problem.
  • Let me know on a Piazza post if you'll arrive late.
  • If nobody shows up after 20 minutes and I have no notice of late arrivals, I will leave.

Class Schedule (see required attendance rule on Grading Section):
  • Tuesday/Thursday 11:10AM - 12:25PM Online : Blackboard Collaborate Ultra.

Lab (see required attendance rule on Grading Section):
  • Monday (Sec 30) 11:10 – 01:00 pm Online: Blackboard Collaborate Ultra
  • Monday (Sec 33) 11:10 – 01:00 pm Online: Blackboard Collaborate Ultra
  • Friday (Sec 31) 5:10 – 7:00 pm Online: Blackboard Collaborate Ultra
  • Friday (Sec 32) 5:10 – 7:00 pm Online: Blackboard Collaborate Ultra
TAs: TBD Office Hours: Check Piazza
UTAs: TBD Office Hours: Check Piazza
LAs: TBD Office Hours: Check Piazza

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 discuss the main concepts of software development in the Java language, but will include significant portions of programming. Everyone should have their computers set up and ready to code before every lecture.
  • Labs will help you jump into more significant programming projects. You will program during lab, and be responsible for deliverables.
  • Students are assessed through a combination of individual and group homework, online exercises, lab assignments, and exams. Attendance of both labs and lectures is mandatory (attendance during COVID-19 will be evaluated a bit differently, see Grading).

Prerequisites:

  • None! All are welcome and capable.

Responsibilities - Students must

  • Attend all classes unless you are sick or there is an emergency. In these cases, please contact the professor. During COVID-19, See Special note on grading.
  • Interact, ask questions, and generally participate in class discussions. Participation is a graded part of the course.
  • Attend all labs, and do work assigned therein. During COVID-19, see Special note on grading.
  • Complete programming problems individually unless working in a group as specified on the assignment in which case you can work only with those group members. We do plagiarism detection so don't throw the course away.
  • When working with a group, it is essential that each group member pull their own, but also that other group members let them do so!

Course Philosophies.

Throughout the class, students should focus on adhering to the following general tenets:

  • Try it! -- A common question is "will this work", or "what will happen in this case". The only reasonable answer is "try it and see!" Your system will not blow up if you program incorrectly, and it is _essential_ to learn to harness trial and error as one of the most effective ways to learn programming.
  • Know your sources, and use them! -- The Javadocs webpage is invaluable to find utility methods to use. The syntax of Java is documented well in your textbook, and in online tutorials. Learn to use your sources productively to help to make progress.
  • 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. Design your programs by breaking them into independently implementable chunks, and write + 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. Do _not_ take a program that doesn't work, and modify smaller parts of it until it works. Understand why it doesn't work, and use that knowledge to change or even rewrite your program!

  • Webpage for the course (here) Class Info
  • Blackboard and Blackboard Collaborate Ultra (BBUltra)
  • Codio:

    Codio is a cloud based platform that allows for the creation, assigning, completion, testing, and grading (manual or automatic) of programming assignments. You need to register for it (you'll receive an invitation from the instructor) so you can complete readings, exercises, and assignments.

  • Piazza
  • For a detailed view of the Lectures and Activities, go to Schedule

Grade Calculation:

  • Participation: 10%
  • Prep Readings and Exercises: 10%
  • Labs: 20%
  • Homework Assignments: 20%
  • Project Assignments: 20%
  • Final Exam/Assignment: 20%

Late Submissions:

Normally, we do not accept any late submissions.

For this semester only, we will give partial credit for small HW assignments and projects (not for prep readings and exercises). The partial credit will be:

  • One day late: -20%
  • Two days late: -40%
  • After two days, no assignment will be graded.

Submitting 1 second late is the same as a full day late. Plan ahead and submit early.



Prep Activities: Prep activities are readings and exercies that must be completed in Codio BEFORE the Lectures or Labs. THese will be graded in the following way:

  • Reading Only: 100 IF completed the reading oon time; 0 otherwise.
  • Reading And Exercises: 30% is the exercise grade and 70% is for simply complleting the reading; 0 otherwise.
  • Once the deadline arrives, these will be Read-Only with no extensions.


Notes on Grading during COVID-19:

COVID-19 has caused several changes to how we run the class.


Participation instead of Attendance:

In lieu of attendance, we will be keeping track of in-class and in-lab (synchronous) participation or your participation using asynchronous methods (Piazza, Office-Hours, Codio exercises).

Synchronous vs Asynchronous Materials:

During COVID-19, some students might not be able to attend synchronously because of their timezone or their available technology.

If you will not be able to attend (any) lectures and/or labs, you need to register as a fully-asynchronous student with the instructor (send me a detailed explanation using a private message on Piazza). If you miss few synchronous lectures (one or two) then you don't need to do this.

We will offer asynchronous options that need to be completed in a timely manner. For these students, we will have a different way of counting participation:

  • You will be asked to participate in asynchronous team discussions using Piazza.
  • If asked to, you will be required to attend office hours.
  • You might be asked to complete oral interviews where you explain concepts or code, or do live coding.
  • You might be asked to submit video recordings where you explain a concept, explain your code, or present a diagram.

Just as you can do a google search for code online, it is trivial for us to do the same. We have caught numerous people cheating in the past in this way. If you feel pressured about an assignment, please come see me instead of cheating.

You are not allowed to collaborate on the homework and lab assignments unless explicitly told to. Group assignments require collaboration amidst 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. If you're having significant trouble with an assignment, please contact me. Please see: Academic Integrity Policy

Anonymous Feedback Form


We will add a link inside blackboard to an anonymous feedback form so you can let us know if there is anything getting in the way of your learning. You will find it in the blue left-hand side menu: