Skip to content

CS 253 FAQ

Douglas C. Schmidt edited this page Sep 9, 2023 · 41 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 software in Java running on the Android and Spring 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 and functional programming mechanisms, particularly as they pertain to concurrent and parallel programs.

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

    • Know where to find additional sources of information on how to program mobile applications and services on Android handheld systems.

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

    This material is intended for self-motivated students who

    • Know Java, Android Studio, and Git (or can learn them quickly on their own)
    • Want to understand both the concepts and practice of developing mobile software applications and services
    • Are curious about how the Java and Android 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 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 253, 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 253 assignments and examples, 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 browse all the Java 8 source code here and you can browse all the Android source code online here.

  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. Likewise, to learn about functional programming in modern Java please check out my 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 git@github.com:douglascraigschmidt/CS253.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 and Content of the Quizzes?

    The quizzes will be structured as short written answers to questions that are derived from the lectures, questions asked in class and/or on Piazza, and programming assignments. Each quiz 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 is to (re)watch the videos, (re)read the slides, and review the material covered on Piazza after the previous quiz. It's particularly important to understand the common programming problems identified in the "frequently made mistakes" videos and know how to resolve these types of problems.

  15. How Can We Match the Version of Android Studio with the build.gradle Files?

    The "android" variable in the root build.gradle file in each assignment should always be changed to match the Android Studio IDE that's being used. For example, if you're using Android Studio 4.1.0 (which is the n.n.n version number found in the Android Studio IDE "about" dialog) then the "android" variable in build.gradle should be

            android : '4.1.0'
    

    Normally the IDE will prompt you to automatically upgrade that version number when you load an old project. But sometimes students miss that prompt or dismiss it, so if you're having weird problems then you'll need to update this value in the build.gradle file manually.

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

    You can determine your grades on the programming assignments by running the auto-grader that's included in the gradle tab. 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 auto-grader prior to submitting your initial solution and push the resulting GRADE file to your GitLab repo or your program will not be reviewed.

  17. 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.

  18. When 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. Two-part assignments (e.g., assignment 1a and assignment 1b) will be graded as a single unit after the final solution for the "b" part of the assignment has been submitted, so make sure to integrate your solution for assignment "a" into your solution for assignment *b, along with your (updated) solutions for all previous assignments. There will be a separate Google submission form for the initial parts of each of these two-part assignments. However, there will be no Google submission form for the final solution for each assignment, i.e., you simply need to push your code by the deadline.

  19. 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. Also, make sure your code is thoroughly commented, as per the instructions here. Code that is not commented will not be reviewed.

  20. 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 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.

  21. Is it required to submit programming assignment solutions for the initial review?

    Initial submissions that aren't turned in by the due date/time will not be reviewed by the course instructor. The code submitted to the course instructor for review must compile correctly "out-of-the-box" and must make a "good faith" effort to address all the "TODO" comments and follow the specification. Make sure not to remove the "TODO" markers. Submissions that do not meet these criteria will not be reviewed.

  22. How can we generate an SSH key for use with GitLab and GitHub?

    GitHub has great docs for SSH key generation here.

  23. What Does This "Fatal" Error Message Mean and How to Correct It?

    What does this error message and and how can we fix it?

            fatal: Could not read from remote repository.
            Please make sure you have the correct access rights and the repository exists.
    

    This typically occurs when you either haven't setup your SSH key correct or your SSH agent isn't running. Please seem FAQ item #22 for instructions on setting up your SSH key and here for suggestions on running your SSH agent.

  24. Is This Course Offered Every Semester?

    No, this course is offered in the Fall semester. The course I teach in the Spring semester is described here.

Clone this wiki locally