Note that you can access the Java 8 APIs at
the
Oracle site.
Note on the course materials: We'll start with Liskov. Don't worry about the publication date;
Liskov is basically a math book, and hence ages remarkably well.
We're interested in contracts, mutability, data abstraction, and type abstraction.
Bloch is concerned about the same things,
but explores them in more detail and in more up-to-date Java.
Bloch also corrects some important points
that weren't well understood when Liskov's text came out.
Course Outcomes
-
Demonstrate ability to specify and analyze stand-alone procedures
and OO classes.
-
Demonstrate ability to specify and analyze OO inheritance decisions.
-
Demonstrate ability to convert mutable data types to
immutable data types and vice versa.
-
Demonstrate ability to correctly create and destroy OO objects.
-
Demonstrate understanding and competence in generic programing.
Weekly schedule
This class is a group-based, hybrid synchronous, online offering.
That means you need to be present in class at class time.
You will also need to schedule regular meetings with your group
and with me (and possibly the GTA)
outside of class.
This is my first offering of this class in a full-time online format.
Some of what we will do is extracted directly from the F2F version of this
class.
Some of what we will do is new for the online offering.
We'll keep what works and modify what doesn't.
Each week will cover a small number of related technical
issues (see course schedule).
Let's call this small number of technical issues a "topic".
Each topic will follow roughly the same sequence of preparation,
in-class learning activities, homework completion and (possibly) presentation,
and knowledge assessment.
To make this scale in an online environment, many of these activities
will be group based. (See a later section in the syllabus on
my view of the importance of interactive learning.)
The sequence is:
- Preparation: Complete assigned readings and watch relevant videos, if any.
- Reading quiz: This is a formal opportunity for each group to
reflect on the reading.
- Synchronous Class Meeting (BB Collaborate):
- Prior week's homework solution presentation and discussion.
This is typically a randomly selected group,
but occasionally, I'll do the presentation.
- Reading quiz summary
-
Combined session on the day's topic, followed by in-class
exercises (group breakouts)
-
Break
-
Combined session on the day's topic, followed by in-class
exercises (group breakouts)
-
Wrap up
- Homework (group-based).
- Individual oral assessments.
Grading
- Group Functioning (group-based) : 5%
- Reading Quizzes (group-based) : 10%
- Homework assignments (group-based): 15%
- Oral Assessments (individual): 35%
- Participation (individual): 5%
- Final exam (individual): 25%
- Class Attendance: 5%
Each of these grade components is discussed below.
Group Functioning
Every student needs to be part of a group.
I would prefer that groups stay stable throughout the semester,
but if there is a good rationale to reconfigure a group or two,
we'll do that.
Group size: 2 to 4 students.
Group creation mechanism: As a default, we'll drop students into groups
at random. If you are happy with your random group, great!
If you prefer a different group, during the first week you will have the option
to re-group.
If your group dwindles to just yourself, you'll need to join another group.
At the end of the semester, each individual will provide an assessment of the
rest of their group. This assessment will figure in to the "Group Functioning"
part of the grade.
Groups can communicate internally through any mechanism they choose: zoom, discord,
google docs, whatever.
Reading Quizzes
Each week, each group must complete a "reading quiz"
the day before the first class of the week.
(That means noon Monday, in the case of this class, since
class meets Tuesday morning.)
I will review these quizzes before class, compile the overall
responses, and use them to tune the in-class activities.
I plan to make these quizzes available on BB, but that
might change if someone has a better idea.
These quizzes are part of the learning process
rather than the assessment process.
That is, they generally don't assess whether you have achieved mastery
of the material,
rather they check whether you have done the necessary preparation.
Important: There are no make-ups.
Homework Assignments
There are weekly group homework assighments.
I post homework assignments on the class web site.
Generally, your group should submit assignments via
Blackboard.
Because of the way in which this class is taught, it is important to stay on pace.
Homeworks are due before class. Late submissions are not
accepted except in truly exceptional circumstances.
Important:
Each group should be prepared to present
their homework solution in class.
Important: Statement of who did what.
Homeworks are group exercises.
Each submission must contain a specific statement of who did what.
Important: Solutions and solution checking.
The group must split their roles on each exercise. Part
of the group creates the solution.
A separate part of the group checks the solution,
certifies that it is correct,
and explains why it is correct.
If you can't formulate this explanation, it's time
for your group to see me or the GTA in office hours.
Note that this model is common in engineering, where engineers sometimes
create solutions and other times certify solutions.
You should rotate roles within your group from week to week.
Oral Assessments
Ideally, oral assessments happen every week.
I am skeptical that I have the bandwidth to
make that happen, but we'll try to get close.
Realistically, each student
should expect such an assessment every two weeks.
Each student will have the same total number of oral
assessments count towards their final grade.
Process:
- Scheduling: While each student will complete each assessment individually,
we will schedule assessments by group. Each week,
I'll use a random selection process (without replacement)
to determine which groups are "next".
Each individual in
a group will schedule a time through the GTA (details TBA on Piazza).
- Duration: I plan to schedule each assessment for 5 minutes.
Once we see how this works, this might change slightly.
- I will be forthcoming about the content for each assessment.
That is, you shouldn't be surprised by any of the questions.
Often, they will be closely related to the prior week's homework.
The questions will typically look like, "What would Liskov (or Bloch)
think of the following variation(s) of this snippet of code we studied
last week? And why would they think that?"
- Not every student will get the same quiz, even if the quiz is on
the same day. I promise to be fair about this.
- The evaluation scale is as follows:
- Awesome == You demonstrate mastery of the material. Scores 10/10.
- Strong performance, but perhaps a slight wobble: Scores 9/10.
- Acceptable, but some significant errors: Scores 8/10.
- Weak: Scores 5/10 to 7/10.
- Unacceptable: Scores 0/10.
Make-ups. The goal is to get you to understand the material.
So, if you score as "Weak" or "Unacceptable", I'll give you an
opportunity for a make-up. The maximum score on a make-up is 8/10.
Before I'll admit you for a make-up, you will have to practice
with the GTA. If the GTA gives me the green light, I'll schedule
a make-up.
Participation - Piazza Points
CS/SWE 332 will use the
Piazza
software for a discussion board and for posting updates.
Participation on the discussion board counts towards your grade.
Here's the deal:
A constructive, relevant, non-redundant post earns a Piazza point.
Here are some examples:
- A question that elicits a substantive, correct answer.
- A substantive, correct answer to another student's question.
- A substantive, correct refinement or clarification of another student's answer to a question.
- A pointer (with discussion) that links a class topic to something external (and relevant).
- A correction to anything substantive that I get wrong!
You can earn one Piazza point, but no more, in any given week. (A "week" is
defined as the way Piazza tracks weeks.)
You're done earning points after you hit the magic number 5,
but you are, of course, still welcome to continue posting.
Participation must occur during the semester, not after final exams start.
Note: starting early is good strategy.
I find anonymous discussions unhelpful in this class;
here learning is predicated on interactions.
Plus, part of your education
is to learn to stand behind your questions and ideas. That's how employees
function in the working world. Piazza allows
partial, but not complete, control of anonymous posts.
Should someone post anonymously, I will ask the poster to change the visibility
and ask the class not to respond to the anonymous version.
Final Exam
There will be a final exam appropriate for the online,
unproctored nature of this class offering.
I plan to offer an oral option as well
as a written option. The last class of the semester will include
a detailed discussion of the exam structure and contents.
Class Attendance
I place great emphasis on peer learning and interactive engagement.
Here's why.
I have structured the class to leverage group interactions to the largest
extent possible for the purpose of maximizing
learning gain through out the semester.
Bottome line: It's important to be in class.
This is reflected in the grade via the following formula: Two absences are "free". Each absence after that reduces the class attendance grade by 20%.
The GTA will take attendance near the beginning of class each class meeting.
(Note: I realize that there are connectivity issues. If this happens to you
during a particular class, send a private message to the GTA as soon as possible.
If this happens frequently, we need to talk.)
In-Class Exercises
I plan an in-class exercise for every class.
Students will work in their designated group.
Some of these exercises need a Java development environment.
Very often, the in-class exercises will be closely related
to an upcoming homework assignment.
ShowMe Videos/Other videos
The course schedule page links to a number of short videos created
with the ShowMe service.
Some students find these helpful for grasping key points
from various lectures.
Several items of note:
- Each ShowMe captures an interaction a student has with me.
Such interactions can help students master the material
more effectively than having me drone on solo.
- I am interested in creating more ShowMe videos for other
topics in the course.
Contact me if you would like to help me do this.
- I am open to redoing existing topics if there is something
you think could be done better.
- Other videos are just me.
Record Keeping
We'll use Blackboard to maintain raw scores and attendance data.
It's the student's responsibility to ensure that Blackboard records are correct.
(I'm happy to correct errors.)
Email
Please note that questions of general interest should not be emailed
to me. Post on Piazza instead.
Virginia Privacy Laws
The state of Virginia now has laws that require the University (including me) not to
disclose student email addresses, phone numbers, and addresses.
This will impact communications in this class as follows:
- Communicating via email with groups of students is problematic. (Bcc is a partial
but not very good, solution.) As far as I have been able to determine,
Piazza does not make student emails visible to
other students, even though instructors can see email addresses.
Hence, this is another reason to favor the Piazza forum.
- You can choose to disclose your email whenever and wherever you wish.
That's up to you.
Honor Code
As with all GMU courses,
CS/SWE 332 is governed by the GMU Honor Code.
In this course, all oral assessments and the final exam
carry with them an implicit statement that it is the sole work of the author.
Further, all group submissions require a statement
of participation from each member of the group.
Learning Disabilities
Students with learning disabilities (or other conditions documented with GMU Office of Disability Services)
who need academic accommodations should see me and contact the
Disability Resource Center (DRC) at (703)993-2474.
I am more than happy to assist you, but
all academic accommodations must be arranged through the DRC.
|