Skip to content

CS 891 FAQ

Douglas C. Schmidt edited this page Apr 12, 2024 · 55 revisions
  1. What are the course objectives?

    Upon completing this course, students should be able to:

    • Recognize the inherent and accidental complexities involved with developing concurrent and parallel microservices in Java running on the Spring WebMVC and WebFlux middleware platforms.

    • Understand how pattern-oriented software architecture and framework techniques can and cannot help to alleviate these complexities.

    • Be fluent in the use of modern Java object-oriented, functional programming, and reactive programming mechanisms, particularly as they pertain to concurrent and parallel microservices.

    • Apply patterns and frameworks to develop reusable and resilient concurrent and parallel microservices using the Java programming language and Spring middleware platforms.

    • Know where to find additional sources of information on how to program microservices on Spring middleware platforms.

  2. What are your assumptions about--and expectations for--students taking CS 891?

    This material is intended for self-motivated students who

    • Know modern Java, IntelliJ, and Git (or can learn them quickly on their own)
    • Want to understand both the concepts and practice of developing concurrent and parallel microservices
    • Are curious about how the Java and Spring software stacks are designed and implemented
    • Are willing/able to carefully read/follow the instructions in the course assignments and announcements.
  3. Can students take this course if they have little/no prior experience programming with Java?

    No, this course assumes that students have experience programming with Java, which is why CS 1101 is a required prerequisite rather than CS 1104. Additional material on object-oriented Java programming is available at the Android App Development Coursera specialization website and material on functional Java programming is available at my YouTube playlist here.

  4. What happens if we don't submit our code for instructor review by the deadline?

    Not having your code available for instructor review adds extra work for the course staff. Therefore, if you don't submit your code by the deadline you will receive 0 for the assignment.

  5. How does the graduate material differ from the undergraduate material?

    Students taking this course for graduate credit have additional work on each assignment, quiz, and final exam. This additional work will be clearly indicated.

  6. Who is eligible to enroll in this class and access the material?

    Anyone is welcome to view the programming assignments and lecture material. However, only Vanderbilt students can enroll in this class and access the other material at the course website. Much of this material is available in my LiveLessons tutorial videos.

  7. When will the screencasts and PDF slides of the class lectures be available? The screencasts and PDF slides will be posted later in the day after the class lecture is given. There are typically two lectures a week (Monday and Wednesday), but the lectures aren't always published as screencasts, depending on what is covered that day. In particular, the answers to quizzes and programming assignments aren't posted as screencasts. Moreover, the slides (and topics covered) often change right up to the start of class, so they are not available ahead of time.

  8. What information (if any) is needed at the top of the programming assignment submissions?

    It is not necessary to include comments at the top of your source code files with your name, email, honor code statement, assignment name, date, etc. since

    • We're using GitLab, so the course staff know whose code we're reviewing
    • The Vanderbilt Honor Code applies to everything we do in CS 891, as per discussions in the first class.
  9. How should student GitLab accounts be created and structured?

    Each student should create a single GitLab account and submit the ID to the Google Survey sent via email. The GitLab repository should be private and structured like the assignment folder here, i.e., there should be a separate directory for each assignment. Failure to follow this structure will prevent the course staff from grading programming assignment submissions.

  10. What is the process for initial submissions and resubmissions of programming assignments?

    Please see the instructions here.

  11. Where is the source code described in this course?

    We've created a GitHub repository for the CS 891 assignments, which you can access here. You can either install/use GitHub to access each folder in the repository (recommended) or you can download it in a single zip file (not recommended). You can access all the Java source code here. The PDFs versions of the slides associated with case study walkthroughs in class always include the URL for the particular source code example being discussed. 

  12. How can we learn more about object-oriented and functional programming in modern Java?

    To learn about object-oriented programming in Java please enroll for free sessions of the Android App Development MOOC Specialization by going to the individual MOOCs at

    you can enroll in them without being asked to pay and simply "audit" the courses. In contrast, if you go here you will be asked to pay and receive a verified certificate for the courses, which you probably don't want to do. To learn about functional programming in modern Java please check out this YouTube playlist. Likewise, to learn about sequential streams programming in modern Java please check out this YouTube playlist.

  13. How Do I Pull New Assignments from the Instructor Repository onto My Gitlab Repository?

    The steps to pull changes from the GitHub repository and push those changes to your GitLab repository are as follows (make sure you're in the directory where you have your GitLab repository cloned):

    • Make sure you have a remote (called skeletons or whatever you want) set up for the GitHub repository

      git remote add skeletons [email protected]:douglascraigschmidt/CS891.git

    • Pull the changes in from the GitHub repository

      git pull skeletons master

    • After you've got the changes, you can push the changes up to your GitLab repository using your origin remote (points to your GitLab repository)

      git push origin master

  14. What is the Form, Content, and Policies for the Quizzes and/or Exams?

    The quizzes/exams will be structured as short written answers (which may include writing small code snippets) to questions that are derived from the lectures, questions asked in class and/or on Piazza, and programming assignments. Each quiz/exam will include topics covered since the previous quiz (up to, but not including topics covered the day of the quiz itself since it wouldn't be possible to study for that material prior to the quiz). A good way to study for the quizzes/exams is to (re)watch the videos, (re)read the slides, and review the material covered on Piazza after the previous quiz/exam. It's particularly important to understand the common programming problems identified in the "frequently made mistakes" videos uploaded to the course website and know how to resolve these types of problems. Quizzes/exams cannot be made up without obtaining permission from the instructor before the quiz.

  15. How do we find out our grades on the programming assignments?

    You can determine your grades on the programming assignments by running the regression tests provided with each assignment project. There's a 5% deduction for each failed test. It's very important that later assignment submissions fix any/all problems identified by the unit tests in previous assignments. In particular, the goal should be to pass 100% of the unit tests for any given assignment. To incentivize this "cumulative quality" model, each unit test from a previous assignment that is not fixed in a current assignment will also receive a 5% penalty for not passing earlier tests. Moreover, you must run the regression tests prior to submitting your initial solution and push a screenshot of the results in a file named RESULTS to your GitLab repo or your program will not be reviewed.

  16. Since we are to work individually on assignments how we can collaborate effectively or meaningfully with other students via Piazza, with external resources (e.g. tutors etc.), during office hours?

    This class is just all other Vandy non-group-oriented CS courses, i.e., all your work must be your own, which means that you can't collaborate with other students or tutors on graded assessments (e.g., quizzes and programming assignments). Naturally, you are welcome to post general questions to piazza. However, if you have specific questions about your code please don't post your code to piazza, but instead come to office hours or send me a "private" post on piazza. You are also welcome to ask specific questions about your solutions during office hours, just like any other course in Vandy CS.

  17. When (and how) are the final revised submissions due for each programming assignment?

    The date for the revised version of each assignment will be posted here after I have reviewed the initial submissions of that assignment and have thus been able to assess how much time will be required for students to address my comments. Multi-part assignments (e.g., assignment 1a, assignment 1b, etc.) will be graded as a single unit after the final solution for the final part of the assignment has been pushed to the corresponding folder in your GitLab repository. Make sure to integrate your solution(s) for the earlier part(s) of the assignment(s) into your solution for the final part of the assignment, along with your (updated) solutions for all previous assignments. It is not necessary, however, for tests in earlier part(s) of the assignment(s) to work since only the tests for the final part(s) of the assignment will be graded.

    There will be a separate Google submission form for the initial parts of each of these multi-part assignments. However, there will be no Google submission form for the final solution for each assignment. Therefore, you simply need to push any updates to your code by the deadline, after which your program will be graded and the score entered in your Brightspace grade book. If all your tests pass and you have no outstanding comments from me it's not necessary to (re)push your code.

  18. How can we get help on our programming assignments?

    If you need help on your programming assignments please post questions to the piazza discussion forum. If your question requires the course staff to inspect your source code or project configuration please post the question privately after first pushing your code and project to your GitLab repo. Make sure to indicate which GitLab repo belongs to you so that we can review the right project efficiently. Without this information it's nearly impossible to provide useful feedback. Also, make sure you've watched the relevant "Frequently Made Mistakes" (FMM) videos and have addressed all pertinent issues in your solution before asking for help. No reviews will be provided for code that (1) contains problems addressed in the FMM videos or (2) is not commented and formatted properly, as per this guidance. Finally, make sure your code is located in the "main" branch of your repo, rather than on some other branch, so I don't have to search for it.

  19. Is It Necessary to Fix Defects from Previous Assignments in Later Assignments or is Each Assignment Graded Independently?

    It's very important that later assignment submissions fix any/all problems identified by the unit tests in previous assignments. In particular, the unit tests are updated periodically, so tests that passed in earlier assignments may no longer pass when the tests are improved. Your goal should be to pass 100% of the unit tests for any given assignment. To incentivize this "cumulative quality" model, each unit test from a previous assignment that is not fixed in a current assignment will receive a 5% penalty.

  20. What is the Google Survey Form and Why is It Important?

    The Google survey form collections information (such as the link to your GitLab repository) so the instructor and course staff can review and grade your solution. This form also ensures you understand the instructions you must follow to have your program reviewed and graded. A link to this form will be posted on piazza several days before the initial submission is due (see FAQ item #10 above for information on the initial submission process). If you don't submit this form on time your submission will not be reviewed or graded.

  21. How Will We Know When New Programming Assignments Are Available?

    When a new assignment is ready for release (e.g., the previous assignment is complete, the automated tests are installed, and a video walkthrough of the assignment specification, skeletons, and tests is available) it will be announced on piazza. The due dates for all assignments are available here.

  22. When Will the Quiz Results Be Available?

    We strive to grade quizzes taken on Wednesday graded by the Monday after they are given. You should get comments on answers that you got wrong, so please feel free to ask me about any questions you have regarding the grading.

  23. Will There Be a Final Exam and If So When/Where Will It Be Held?

    We may have a final exam, depending on when the final submission of the final assignment is due. If this final submission due during exam week then there will be no final exam (we'll know this before the final week of class). Please see here for information on when and where the final exam will be held if there is one.

  24. What are the Consequences of Not Attending Class?

    Class attendance is mandatory. Please see here for an overview of the class attendance policies and how it affects final grades. Moreover, attendance may be taken in class and students who miss classes without advanced permission will not have their initial program submissions reviewed.

  25. Do We Need to Keep Revision Comments From Previous Submissions?

    No, that's not necessary, but please make sure to address my comments in your next submission(s)!

  26. Can the Google Submission Form Be Completed More Than Once?

    Sure, that's fine.

  27. What is the Quiz Format and Policies?

    There will be a graded quiz during class every two weeks, typically on Wednesday, that are largely be based on material presented and/or discussed in class, so make sure to attend class to prepare for the quizzes. Quizzes are typically returned and reviewed in class the Monday after the quiz was given. There will be no ``makeup'' quizzes unless you ask permission from me before the quiz.

Clone this wiki locally