| About   中文版   «  Chapter 0 Course Policies   ::   Contents   ::   1.1. Objects, Classes, and Micro-Worlds  »

0.1. Understanding this Course

Welcome to CS 1114! Learning to program is one of the most empowering, creative, and deeply satisfying journeys you will ever undertake. At its heart, computer science is not about memorizing mechanical rules or staring at endless lines of cryptic text; it is about the thrill of creation. With nothing more than logic and imagination, you will learn how to breathe life into abstract ideas, construct intricate digital worlds, and build software that can solve meaningful problems. Whether you have never written a single line of code or have experimented with programming before, this course is designed as an open invitation to experience the pure joy of bringing your own ideas to life.

As you step into this craft, remember that software design is an art of iterative discovery. The excitement comes not just from the final working program, but from the process itself: exploring possibilities, tackling intriguing puzzles, and experiencing that unbeatable “aha!” moment when your code runs for the first time. To help you make the most of this creative journey, let’s explore how our course is structured, how you will learn, and the policies designed to support your growth every step of the way.

0.1.1. Read the Course Syllabus

To get started, let’s go through the course policies described in the course syllabus on Canvas to make sure you understand how the course will run, what your responsibilities are, how you will be graded, and how you should conduct yourself in class.

Before continuing, please read the course syllabus posted on Canvas. This chapter highlights the core workflows, grading mechanisms, and expectations you need to succeed from day one.

0.1.2. Who Is This Class For?

This course teaches introductory programming in Java, with a significant emphasis on object-oriented software design and on software testing. In many ways, it is comparable to the AP Computer Science A course offered at some high schools. It is taken by students majoring in Computer Science, minoring in Computer Science, and also by students in other majors across the university.

It can be very helpful if you have already had some exposure to programming. Basic familiarity with variables and sequential logic will give you a leg up. However, the course is designed to be approachable by beginners who do not have any prior programming background.

0.1.3. Students of Many Experience Levels

While this course is designed and intended for beginners, please be aware that students from a very wide range of backgrounds take this course, including some students who may have significant amounts of prior programming experience. If you are a student with significant prior programming experience who has taken the AP Computer Science A course and received a score of 4 or 5, we strongly recommend you use your AP credit to enroll in CS 2114 instead.

For other students, just remember that while there are many reasons why students who already know how to program might take this course, the course isn’t intended for that audience–they are overqualified. You may see such students in lab or on Piazza, asking and answering questions that appear to require advanced programming knowledge. The course staff are happy to answer such questions, but please remember that we do not expect beginners in this course to possess that level of knowledge or to perform as if they have already learned how to program prior to taking this course.

Students with extra experience should not set your expectations about what is normal or what course staff expect of the bulk of students in this course who are learning to program for the first time.

0.1.4. Weekly Schedule

This course runs on a weekly rhythm, and learning the schedule will help you develop a routine, anticipate deadlines, and stay on track. It is extremely important to stay on schedule and turn your assignments in on time every week. The single biggest reason for falling behind in this course is not starting to work on assignments in advance, missing deadlines, and letting work accumulate.

In particular, while the semester starts out with introductory topics, please do not allow yourself to be lulled into believing you can cut corners on readings or lab preparation. Regular, weekly engagement with the course content and active practice on your programming skills are necessary to develop true mastery of the concepts.

Throughout the week, pay attention to the following recurring activities:

  • Sunday (11:59 PM): Weekly Reading Activity due on Canvas (complete before your lab).

  • Before your Lab: Complete the required online Pre-Lab Assessment on Canvas.

  • Monday / Wednesday (or Tuesday / Thursday): Lecture meetings with active in-class problem solving and iClicker activities.

  • During your Scheduled Lab Period (Thu/Fri/Mon/Tue/Wed): Attend your enrolled lab section, collaborate with your assigned partner, and submit your completed lab before the period ends.

  • Wednesday (11:59 PM): Program Assignment due (every other week).

  • Every Other Week: Complete your 20-minute proctored Quiz in the Secure Computer-based Testing Facility during your scheduled testing window.

  • Within 2 Weeks of Program Deadlines: Complete your required 5-minute in-person Grading Interview with a TA.

0.1.5. Attendance and In-Class Participation

You are expected to attend all lecture and lab meetings, and strive to arrive promptly on time.

  • Lecture Meetings: While traditional attendance is not taken at the door, lectures incorporate frequent interactive problem solving and peer discussions using the iClicker Student Mobile or Web App. Graded in-class participation accounts for 90 points of your final course grade and cannot be made up remotely. You must bring your laptop and iClicker-enabled mobile device to every lecture. A small cushion for unexpected absences (such as minor illness) is already factored into the participation grading model.

  • Lab Meetings: Attendance in your officially enrolled lab section is mandatory. You must be physically present in the lab room to submit lab work. If an unavoidable illness or emergency prevents attendance, you must use a Lab Grace Pass to complete and submit the lab on your own time.

  • Final Examination: The final exam date and time are set by the university. Only the Dean’s office can grant permission to reschedule a final exam (e.g., in cases of direct exam conflicts or having 3+ exams in a 24-hour window).

Note: If you have an evening lab session that goes past 5pm and are also taking a math or physical science course, you should immediately double-check with your instructor in your math or science course to find out if they schedule required, proctored exams or other obligations during your scheduled lab period later in the semester. Out of class exams from other courses are not an excuse to miss your mandatory lab meeting time. To avoid this situation, you can switch to a different section of this course during the first week of classes to change your lab meeting time. Alternatively, if you discover such a conflict later in the semester, you must work with your math or science instructor to arrange an alternate time to take their exam.

0.1.6. Reading Activities

There is no physical paper textbook to purchase for this course. Instead, all reading materials and interactive modules are presented through weekly online Reading Activities on Canvas, which are due on Sunday nights at 11:59 PM.

  • Preparation for Labs and Quizzes: In addition to Sunday deadlines, you should always complete the week’s reading before your scheduled lab meeting to be prepared for the required pre-lab and to be prepared for the lab work itself. The concepts introduced in reading activities are also directly assessed on upcoming quizzes and programming assignments.

  • Unlimited Practice for Full Credit: Reading activities contain interactive coding questions to help you practice. They also include supplementary syntax practice resources for those new to programming, as well as addiitonal exercises for self-study and exam preparation. You can repeat these exercises as many times as you like before the deadline until you earn full credit.

  • Strict Due Dates: Reading activities must be completed by the posted deadline. No late submissions are accepted on Reading Activities. You can continue to review or complete all exercises (both graded and supplemental) for self-study purposes after the deadline (not for grade credit).

0.1.7. Lab Assignments

Each week includes a hands-on laboratory assignment designed to reinforce the concepts you are learning. Labs are posted on Canvas at the start of the week, and your work is submitted online and evaluated by the automated grader.

Key lab policies and workflows include:

  • Mandatory Pre-Lab Assessment: Every lab includes a pre-lab assessment on Canvas covering the required background and instructions. You must complete the pre-lab with 100% accuracy (no errors) before your lab period starts. You may repeat the pre-lab as many times as needed, but you will not be allowed to begin the lab assignment until you have achieved a perfect score.

  • In-Person Attendance and Pair Collaboration: You must attend your enrolled lab section in person. Each week, you will be paired with a lab partner to collaborate, discuss approaches, and troubleshoot code.

  • Punctuality: You must arrive on time so that you and your partner can begin immediately. Students who arrive more than 15 minutes late will have their partner reassigned, will not be permitted to submit work during the lab period, and will need to complete the lab independently using a Lab Grace Pass.

  • Immediate Feedback & Resubmission: You may submit your lab code to the autograder as many times as you like during your lab period to receive feedback, fix errors, and improve your score. Only your most recent submission is evaluated.

  • TAs as Coaches, Not Hand-Holders: Lab TAs are available to answer conceptual questions and steer you past roadblocks. However, they expect you to have read the assignment and completed the pre-lab beforehand. If you arrive unprepared, you will struggle to complete the work in time.

  • Specifications Grading (EMRN): Labs are evaluated on the EMRN scale. Achieving a rating of Meets Expectations (M) earns full credit (9 points per lab, 126 points total for 14 labs), while Excellent (E) earns 110% extra credit.

  • Check-Out Requirement: You and your partner are working as a team. You may not leave the lab early until both you and your partner have completed all programming tasks, submitted your work, and officially checked out with a lab TA.

  • Individual Accountability & Lab Oral Interviews: While you work in pairs during lab meetings, all lab submissions are strictly individual work and must be submitted under your own account. Every student is individually accountable for understanding every line of code they submit. Course staff may randomly call in any student for a brief oral grading interview on any lab assignment to assess their code comprehension, ability to trace execution, and design justification. Demonstrating satisfactory understanding of your submitted solution is required to confirm your mastery credit.

  • Lab Late Policy & Grace Passes: Lab submissions close at the end of your scheduled lab period. Late work is not accepted without using a Lab Grace Pass. You begin the semester with 3 Lab Grace Passes, each of which grants a 48-hour deadline extension past the end of your scheduled lab meeting. Each lab assignment may only be extended once.

0.1.8. Program Assignments

There are 6 major programming assignments given throughout the semester, posted every other week on Canvas and due on Wednesday nights at 11:59 PM. Programming assignments require you to synthesize course concepts, design object-oriented software solutions, and write comprehensive automated test suites.

  • Independent Work: Program assignments are strictly individual work done outside of class. You must design, write, test, and debug your own code. You may not collaborate with other students or copy code from any source.

  • Submissions & Automated Feedback: You submit your code electronically to Web-CAT, where it is evaluated against automated test suites for correctness, code style, and test coverage. You can submit as many times as you like prior to the deadline to review feedback and refine your code. Only your last submission is graded.

  • Specifications Grading (40 Points Each): Each programming assignment is worth 40 points (total of 240 points across 6 projects) and is evaluated on the EMRN scale. Earning an M (Meets Expectations) awards 100% (40 points), while an E (Excellent) awards 110% (44 points).

0.1.8.1. Mandatory In-Person Grading Interviews

For every programming assignment, you must schedule and complete an in-person grading interview with a course TA:

  • Format and Timing: Grading interviews take approximately 5 minutes and must be completed within 2 weeks of the assignment’s due date.

  • Purpose: The interview assesses your genuine understanding of the code you turned in. You will be asked to explain how your code works, walk through specific algorithms, justify your design and data structure decisions, and explain your testing strategy.

  • Prerequisite for Grade: You cannot receive a grade for a programming assignment until you have completed your grading interview. If you cannot explain or defend your code during the interview, it indicates that you did not do the underlying learning.

0.1.8.2. Program Grace Passes and Mastery Passes

To give you flexibility while upholding rigorous mastery benchmarks, program assignments use two specific types of passes:

  1. Program Grace Passes (Deadline Extensions): - You begin the semester with 3 Program Grace Passes. - A Grace Pass extends the submission deadline for a program assignment by 48 hours past the original Wednesday due date. - Each program assignment’s deadline can be extended at most once. - Late submissions are not accepted without a Grace Pass.

  2. Program Mastery Passes (Revisions for ‘R’ Grades): - You begin the semester with 3 Program Mastery Passes. - If you receive a grade of Revision Needed (R) following your grading interview, you may use a Program Mastery Pass to reopen the assignment for 48 hours to revise, fix, and resubmit your work. - Resubmitting via a Mastery Pass requires scheduling a new grading interview to evaluate your revised submission. - Program Mastery Passes must be used within 2 weeks of the original assignment due date. Completing your initial grading interview early ensures you have sufficient time to use a Mastery Pass if needed.

0.1.9. Quizzes

Rather than traditional high-stakes midterm exams, this course uses 7 shorter, proctored quizzes given approximately every other week. Each quiz is worth 35 points (for a total of 245 points toward your course grade).

  • Secure Computer-Based Testing Facility: To ensure testing integrity and flexibility, quizzes are administered out of class in a dedicated, secure computer-based testing facility on university-provided desktop computers.

  • Scheduling Your Quiz: You will schedule your own testing appointment at the facility during the designated multi-day window for each quiz.

  • Testing Environment: Quizzes are strictly closed-book and closed-notes. No personal laptops, phones, smartwatches, or outside materials are permitted in the testing facility. (If the testing facility is unavailable for a specific quiz, it will be administered in class using LockDown Browser with advance notice.)

  • Quiz Mastery Passes (Retakes): - Students begin the semester with 3 Quiz Mastery Passes. - If you miss a quiz or score lower than you hoped, you can use a Quiz Mastery Pass to schedule one retake of that quiz in the testing facility during the week after quiz results are released. - Each individual quiz can be retaken at most once.

0.1.10. Programming Language and Environment

This course teaches object-oriented programming using Java.

  • BlueJ Development Environment: We will use the BlueJ IDE for code development, interactive object visualization, and lecture examples.

  • Download Directly from Canvas: Please install BlueJ using the installer link provided on the course Canvas homepage rather than downloading from the generic BlueJ website. The Canvas installer includes specialized support libraries and testing tools pre-configured for CS 1114.

  • Web-CAT & CodeWorkout: Automated grading and code feedback are provided through Web-CAT (for lab and program assignments) and CodeWorkout (for interactive practice exercises).

0.1.10.1. Understanding Specifications Grading (The EMRN Rubric)

For lab and programming assignments, we use specifications grading. Instead of arbitrary point deductions for minor errors, your submissions are evaluated against clear, binary criteria that define what proficient work looks like.

Assignments receive one of four categorical ratings:

The EMRN Evaluation Scale

Rating

Standard & Meaning

Point Award

(E) Excellent

Exceeds expectations with no nontrivial errors and exemplary design/testing.

110% of points (Extra credit!)

(M) Meets Expectations

Clearly demonstrates intended mastery of all learning objectives with no significant gaps.

100% of points (Full credit)

(R) Revision Needed

Demonstrates partial understanding, but contains gaps or errors requiring revision.

10% of points (until revised)

(N) Not Assessable

Fragmentary, uncompilable, or insufficient evidence of concept understanding.

0% of points

In specifications grading, M is the benchmark for mastery. Earning an M demonstrates that you have learned the material and awards 100% credit. Earning an E recognizes exemplary work with bonus points. An R indicates that you are on the right track but need to revise your work using a Mastery Pass to reach full credit.

0.1.10.2. Summary of the Course Passes System

To support student well-being and allow opportunities to learn from mistakes, every student begins the semester with a personal allocation of 12 specialized passes divided into four distinct categories:

  • 3 Lab Grace Passes: Grants a 48-hour extension on any single lab deadline.

  • 3 Program Grace Passes: Grants a 48-hour extension on any single programming assignment deadline.

  • 3 Program Mastery Passes: Reopens a programming assignment graded ‘R’ for 48 hours to revise, resubmit, and complete a new grading interview (usable within 2 weeks of the due date).

  • 3 Quiz Mastery Passes: Grants one retake for any missed or low-scoring quiz in the testing facility (usable within 1 week of results release).

Passes are managed through Canvas and are designed for you to use whenever life circumstances or learning hurdles arise. Use them strategically!

0.1.11. Cheating and The Virginia Tech Honor Code

Academic integrity is taken extremely seriously at Virginia Tech. All submitted coursework in CS 1114 is considered graded work covered by the Honor Code. All program assignments, reading exercises, pre-labs, and quizzes must be completed individually.

0.1.11.1. Academic Integrity Module

All students must complete the following Canvas module during the first week of class:

0.1.11.2. Collaboration Boundaries: What Is and Is Not Permitted

To foster learning while maintaining integrity, clear boundaries exist regarding collaboration:

Permitted Collaboration:

  • You may freely discuss general Java syntax, language features, and library methods with peers.

  • You may discuss what compiler or runtime error messages mean in general terms.

  • You may discuss the conceptual meaning of assignment instructions.

  • During scheduled in-person lab meetings only, you may collaborate directly with your assigned partner and assist peers in your section with debugging.

Prohibited Actions (Honor Code Violations):

  • You may not give or receive assistance from others on your program code or graded work outside of your scheduled lab section.

  • When writing code, you must work alone while typing at the keyboard and viewing your screen. Showing your code to others or looking at another student’s code is a direct violation.

  • You may not seek or receive help from unauthorized external sources, including online tutoring websites (e.g., Chegg, CourseHero, GroupMe) or generative AI tools for code generation/debugging.

  • You may not copy code from any source.

  • No Resubmission of Prior Semester Work: If you are repeating CS 1114, you may not resubmit work from a previous semester. All assignments must be written from scratch to develop current skills.

0.1.11.3. Automated Analysis and Sanctions

All electronic submissions are archived and analyzed with automated plagiarism detection and generative AI detection tools.

If an academic integrity violation occurs, course policy is to recommend the F* sanction as the final course grade. The F* notation appears on your transcript as “FAILURE DUE TO ACADEMIC HONOR CODE VIOLATION”. An F in CS 1114 prevents you from taking subsequent CS courses until successfully repeated and may significantly impact change-of-major applications and graduation timelines.

0.1.12. AI and Long-Term Learning

Generative AI tools like ChatGPT, Microsoft Copilot, Gemini, Claude, Github Copilot, and any many others, are extremely common and their use is becoming a regular occurrence for many. In this class, we want to make sure you understand when and how we expect you to use generative AI.

Your goal in CS 1114 is not simply to produce working code, but to develop the ability to analyze problems, design solutions, and debug software independently. Generative AI tools (such as ChatGPT, Claude, Gemini, Copilot, and Hokie AI) make it easy to generate correct-looking code without engaging in the underlying reasoning. This is known as cognitive offloading–handing off the mental work that builds your own problem-solving capacity, intuition, and technical skill.

If you cannot independently explain, reproduce, and defend your code during your in-person TA grading interviews, you have not done the learning. Future computer science courses, technical interviews, and your professional career depend entirely on your foundational ability to reason through code independently.

At the same time, there are two very powerful things you can use generative AI for that you should really consider: studying and becoming a better student. On the studying side, there is a lot of benefit to studying in a group with other students, asking each other questions by referring to your notes or the reading assignments, and helping each other understand the material. Turning studying, particularly if you are reviewing before a quiz or a test, into a social activity is a powerful technique. But there is also a lot of potential to use generative AI prompts to create self-study quizzes for you (and your study group) to check your own knowledge on concepts we are teaching. Occasionally during this course, we will suggest possible prompts you can use in this way, whether it is about creating self-test questions you can use to study, or creating flash cards, or trying to identify possible misconceptions you might have, or whatever.

Second, generative AI tools can big help in learning how to be a better student. Whether you want an AI-generated work schedule for how to regularly spend time on all your assignments, or AI coaching on better note taking skills, or AI advice on how to prioritize work across different classes so you know what to focus on while also knowing how you’ll complete many assignments all by their deadlines without crushing yourself, there are many practical ways you can use generative AI. Again, we will occasionally look at some of these ways throughout the course.

0.1.12.1. Video: What Everyone Gets Wrong About AI and Learning

0.1.13. AI Use Policy: Learning Support Only

Students may use university-approved generative AI tools solely as a conceptual learning aid. For the purposes of this course, you should consider generative AI tools just as if they were “other people” outside the classroom, or even “fellow students”. As stated in the syllabus, you may freely offer and receive verbal assistance with your classmates on many topics, including: how to use the programming language, what library classes or methods do, what errors mean, or how to interpret assignment instructions. These same rules apply to generative AI tools–you can ask questions or consult generative AI resources for any of these purposes, just like you can your peers.

However, treating generative AI tools is the same way as other people with respect to the Honor Code means that, as with fellow students, you may not use them to receive help while working on your program code or any graded assignments. You may not show your code to others or view code written by others, including generative AI tools, when working on assignments to turn in for this course. In the same way, you cannot copy code from them (or another person) for any graded work.

Acceptable vs. Prohibited AI Uses in CS 1114

Permitted (Learning Support)

Prohibited (Honor Code Violations)

Asking high-level conceptual questions (“Explain the difference between a class and an object.”)

Asking AI to generate code, methods, classes, or solutions for any assignment.

Requesting general explanations of programming topics or library classes.

Submitting your assignment code to an AI tool for review, correction, or debugging.

Asking for generic debugging hints (“What common conditions cause a NullPointerException in Java?”)

Copying AI-generated code or text into your assignment submissions.

Brainstorming study questions or generating practice self-quizzes to test your knowledge.

Using AI to answer reading quizzes, pre-labs, or lab deliverables.

Student Responsibility: You are responsible for the factual and logical accuracy of any AI-assisted explanation you consult. If you are ever unsure whether a particular use of AI complies with course policy, consult your instructor before proceeding.

0.1.13.1. Why Over-Reliance on AI Undercuts Your Future

Relying on generative AI to solve programming problems can significantly undermine your development of critical skills and negatively affect your performance in internship interviews–especially as a college student still building foundational knowledge.

Loss of Critical Thinking and Problem-Solving Skills

  • Research shows that heavy dependence on AI tools for programming tasks leads to “cognitive offloading,” where you let the AI do the thinking for you. This reduces your engagement in analytical tasks and weakens your ability to think critically and solve problems independently.

  • Beginners who frequently use AI for code generation and debugging struggle to develop the foundational skills needed to solve similar problems on their own. This means you might be able to complete assignments with AI help, but when faced with a new or slightly different challenge, you may not know where to start or how to solve the new problem.

Shallow Learning and Poor Skill Retention

  • When you let AI do the work, you miss out on the iterative process of making mistakes, debugging, and learning from them. This process is essential for deep understanding and long-term retention of programming concepts.

  • Studies show that using AI for direct solutions, rather than as a tool for explanations or feedback, leads to weaker problem-solving skills and poorer performance on independent tasks.

Increased Frustration for Beginners

  • For students new to programming, relying on AI can actually increase frustration. If you haven’t built up confidence and understanding through hands-on practice, you may feel lost when the AI’s output doesn’t work as expected or when you’re asked to explain your code.

0.1.13.2. Negative Impact on Internship Interview Experiences

In short, companies hiring interns (or full-time employees) already have access to all the AI resources they need. They don’t need new employees who can only feed problems into AI systems. It is imperative that you build your foundational skills so that you can read and write code fluently before you can use AI tools effectively on coding tasks.

Inability to Solve Problems Without AI: Many technical interviews, especially for internships, still require you to solve problems on a whiteboard or in a live coding environment–without access to AI tools. If you’ve relied on AI up to this point, you may freeze or struggle to solve even basic problems independently.

Difficulty Explaining Your Thought Process: Interviewers often ask you to explain your reasoning, discuss trade-offs, and walk through your solution step by step. If you haven’t practiced solving problems yourself, you’ll find it hard to articulate your approach or debug under pressure.

Suspicion from Recruiters: As AI-generated solutions become more common, recruiters are increasingly wary of candidates who submit “too perfect” code or can’t explain their solutions in detail. Some companies are implementing AI-detection tools or shifting to interview formats that require real-time problem-solving and explanation.

Changing Interview Expectations: While the industry is evolving–some companies are moving toward project-based assessments, live coding with explanation, or system design interviews–the expectation remains that you can reason through problems and communicate your approach, not just produce code.

The bottom line is that generative AI is a powerful tool, but if you rely on it to do the hard work for you, you risk missing out on the critical thinking, problem-solving, and communication skills that employers value–and that you’ll need to master in order to succeed in interviews and on the job. The impact goes far beyond this course, and that is the reason for the course policy regarding generative AI use.

0.1.13.3. Video: AI is Destroying Basic Human Skills

   «  Chapter 0 Course Policies   ::   Contents   ::   1.1. Objects, Classes, and Micro-Worlds  »

Close Window