title |
---|
DSA2: Syllabus |
Course Email: [email protected]
Please use our course email for the fastest response time with the course staff. This email is monitored by our TAs and professors in a help-desk ticketing system and will allow us to more quickly resolve any issues.
- Aaron Bloomfield (aaron_at_virginia.edu). Office: Rice 402. Office hours: TBA. Lecture: Tu/Th 11:00-12:15 in Rice Hall 130.
- Raymond Pettit (rp6zr_at_virginia.edu). Office: Rice 212. Office hours: TBA. Lecture: Tu/Th 9:30-10:45 in Nau Hall 101.
The best way to get in touch with an instructor is to use the course email address. We are very slow at responding to our personal emails, and all course-related content should go to the one above.
Our teaching assistants -- their pictures, bios, and office hours -- will be available soon. Look at the Canvas landing page for more information when it's ready.
Our TAs are students too, with duties and work outside of their TAing. Please do not ask them to act as your TA except at the scheduled on-the-clock times they have listed as their office hours times. They are also kind people; please don't put them in the position of having to say no or (worse) being nice to you at the expense of their own schooling.
Most often CS 3100 class meetings will follow a lecture format. But this semester CS 3100 may use some part of class time for collaborative learning, which will require students to be present.
- "Collaborative" means interacting with the professor, possibly TAs, and each other. "Interacting" will primarily be problem-solving.
- We believe students learn better coming to class and keeping up with lectures, though we recognize the many benefits of recording lectures.
Normal lectures will be recorded, though the instructors reserve the right to discontinue this if class attendance gets too low.
Practicing and Measuring Learning: As always, there will be tasks for students to carry out to support learning and help us assess your learning. Some tasks are designed to help you learn and practice what you learned enough that the concepts solidify in your mind. Others are designed to measure what you have learned. The primary kinds of tasks are: Quizzes, Programming Assignments (PAs), Problem Sets (PSs), and Activities.
Quizzes: Quizzes will be in-class and must be taken in person. They will be closed-book, closed-note, no Internet access, etc.
- See the schedule (Canvas calendar) for the dates. Note that Quiz 5 will be given during the final exam period.
- Also during the final exam period, students will have the opportunity to make up some number of points that were missed on the first four quizzes. This opportunity will only be available if the student made a reasonable first attempt on the quiz.
- A quiz's retake will consist of a few questions worth 10 points total. The points earned will replace up to 10 missing points from the first attempt on that quiz. ("Missing points" means no quiz score can be greater than 100.)
- Our final exam period is set to be Monday, December 16th, from 7pm to 10pm. We recognize that this is a horrible exam time, but it was not our choice. Do not make travel plans that would prevent you from attending the final exam period. We will not give quizzes scheduled for the final exam period early for travel reasons.
- That exam time conflicts with exams from: APMA 2130, COMM 1800, ECON 3010 (sections 099 & 100), JAPN 1010 / 2010 / 3010, and LATI 1030 / 2010 / 2020 (also with CS 2100, but as that is a pre-req for CS 3100, nobody will be in that course)
- We will determine how best to handle this once the withdrawal period ends (October 22). Note that any make-up will be after the normal exam time (meaning no earlier than Wednesday, December 17th).
Programming Assignments (PAs): The goal of Programming assignments (PAs) is to explore one or more topics from a unit by applying an algorithm to a problem, implementing it Java and Python, and showing it works correctly by passing a set of test-cases. Grading will be primarily based on passing test-cases on GradeScope. Some PAs may require a short write-up. Submissions must include information about sources, collaborators, etc. For more information, see sections below on "Collaboration and Outside Sources" for PAs.
Problem Sets (PSs): Each weekly Problem Set (PS) will be approximately 2 to 3 questions. Some may be simple questions on concepts or details of what's be taught, but most will require students to design an algorithm, analyze it's complexity, make proofs or other logical arguments about its complexity, correctness, etc. For information on collaboration on PSs, see the section below on "Collaboration and Outside Sources" for PSs.
LaTeX Warm-up: PS0 will be designed to help learn how to use the LaTeX typesetting system.
Textbook and Readings: We will assign readings from the "CLRS" textbook: Introduction to Algorithms, by Cormen, Leiserson, Rivest and Stein, 4th Edition. (3rd edition is OK, but is missing some new material.) The book is available for free for UVA users in an online format through the UVA Library at this link. There may be additional readings from online sources.
"If you really want to understand something, the best way is to try and explain it to someone else. That forces you to sort it out in your own mind. And the more slow and dim-witted your pupil, the more you have to break things down into more and more simple ideas. And that's really the essence of programming. By the time you've sorted out a complicated idea into little steps that even a stupid machine can deal with, you've certainly learned something about it yourself."
-Douglas Adams
In this course, you are welcome to use Python or Java to complete your PAs. We will provide starter code for both languages. You can use other languages, but (1) we will not be providing starter code, and (2) you have to speak to us about it at least 2 days before you submit it so that we can configure the submission system to use that language. Please choose an IDE that you are comfortable working with (Eclipse, IntelliJ, PyCharm, VSCode, vim, etc). For each PA, you should thoroughly test your algorithms; we will provide some example test cases in the assignment descriptions, but you should devise your own tests to check edge and corner cases.
You will be asked to submit your code to Gradescope. It is important to use a version of Python or Java that is compatible with our grading system. Therefore, we strongly suggest using either:
- Python 3.10.12
- Java 21.0.4 (OpenJDK)
Note that the major and minor numbers should match, not the bugfix version number (meaning the first two numbers of 3.10.12 or 21.0.4).
If you choose to use a different version, please be sure that any classes, methods, language features you use are available in these versions. Note that earlier versions are typically more compatible with the version used here rather than later versions (later versions are likely to have new features not in the versions we are using).
Estimating how long it will take someone to complete a coding assignment is always difficult. The target difficulty is 5-10 hours of focused effort each week.
Grades will be calculated by the following formula:
- Final exam & quizzes (50%)
- PAs (programming assignments) (25%)
- PSs (problem sets) (25%)
We expect that grades will follow the standard decade curve: 90 and above is an A of some sort (A-, A, or A+), 80 and above is some sort of a B, etc. Note: we reserve the right to modify the weighting (changing the curve, adding pop quizzes, etc.), especially if attendance drops off significantly. In particular, if the grade averages are very high, then you will need higher than a 90 to get an A-.
Assignments turned in after the due date are penalized 25% per day (or fraction thereof) late; this means a maximum of 3 days (i.e. 72 hours) late. For example, anywhere from 1 second late to 24 hours late receives 25% percent off.
You may request an extension on any assignment (PA or PS) for any reason. That extension is 4 days. To do so, you will have to fill out an extension request form, the link to which will be provided on the Canvas landing page. You can assume that the extension will be automatically provided by filling out the form; most requests will not receive a reply. An extension will delay the onset of the late penalty -- so if you get an extension, then the late penalty does not kick in until the 5th day after the due date.
This extension rule does not apply to quizzes, exams, or any in-class activities. It only applies to programming assignments (PAs) and written assignments (PSs).
However, there are a few specifics to this extension rule:
- The extension request must be in before the due date; you can't request an extension after the due date.
- Note that the Google Forms form will allow submissions at any time, and does not know the due date for the assignment you are requesting an extension for. We will filter out late extension requests ourselves.
- This extension time covers any and all situations -- being sick, busy, exam or homework congestion, your dog ate your homework, etc.
- We are not expecting to allow any further extensions beyond this 4 days, unless there are considerable extenuating circumstances -- basically, something that would have granted an extension for more than 4 days in the first place. If you get busy or sick at the end of your 4 day extension request, then that's your tough luck.
- After you extension ends, the late penalty (above) kicks in for the next three days.
- This policy already includes SDAC accommodations less than 4 days (we are just extending these accommodations to everybody). Likewise, religious accommodations of a short time (a few days) are handled by this policy as well.
- If there is a valid need for an extended accommodation -- SDAC, religious, health, etc. -- please chat with one of the instructors, and we'd be happy to discuss it with you.
- For written assignments, if you turn your assignment in on time, then that will be the version graded -- you can't turn it in on time, then file an extension, then submit it later, and expect the later version to be graded. We will have already started grading the on-time submissions, and we just don't have the staffing capacity to grade multiple submissions from students.
- This means that any written assignment turned in after the due date, whether late or via an extension, will end up taking much longer to be graded.
- TA and instructor office hours are optimized for the actual due date -- if you file for an extension, there may not be sufficient office hours available for when you plan to submit it. Also, the next week's office hours will have to focus on the assignment due that week.
Programming assignments (PAs) are auto-graded, and will be returned after the end of the extension and late period -- which means after 8 days after the due date. The provided input and required output will be clearly specified in the assignment write-up. When you submit your assignment, a few acceptance tests will be run. These tests are meant to ensure that your program works with the required input and output. They will test the provided examples in the assignment write-up, but they are NOT meant to be comprehensive. Your grade will NOT be based on the acceptance tests -- instead, there will be a separate battery of comprehensive tests that will be used to determine your grade. These tests (and their results) will not be revealed until the homework is returned.
Problem sets (PSs) will be graded differently. Only one or two of the problems will be graded in full, and the majority of the grade for that problem set will be based on that one question (we don't have the staffing capacity to grade each question for each student). The other questions will be graded via a quick spot-check to see if work was done. There is no use asking which question is going to be graded, as that will be randomly determined right before the grading starts (and after the due date).
Any PS assignments turned in by the due date / time will be returned in the first wave. Any assignments turned in after the due date -- whether because of an extension, being late, or SDAC accommodations -- will be graded in a second wave. We will do our best to get the first wave grading done in a reasonable amount of time so that you have reasonably rapid feedback. The second wave will take much longer to return, as that grading can't start until 8 days after the original due date. We will re-determine which question is to be graded in the second wave -- this will be randomly determined as well, and could be the originally graded question with equal probability as any other question in the problem set.
Note: If you submit on time -- and thus your assignment will be graded in the first wave -- then we will not grade a submission submitted by you later (extension or not) in the second wave. We just don't have the staffing capacity to grade multiple submissions from students. If you are unsure whether to submit in the first wave, you can get an extension and take some time to think about it, and have it graded in the second wave.
Quizzes may not be taken late (or early) without special-case permission.
Although quizzes are only 50% of your final grade, we feel it is an accurate representation of your knowledge in the class. It also is more resistant to various forms of cheating than PAs and PSs. Thus, your final average cannot be higher than 10% more than your quiz average. For example, if your quiz average is 75%, but your overall course average is 90%, this rule means that your final course average would be 85% (which is 10% more than the quiz average of 75%).
Much of the grading in this course is done by hand with the help of teaching assistants. Some of the grading is done directly by hand by the instructors. The course staff occasionally also use tools to help with initial clustering of student answers in to similarity groups. In all of these cases, we realize that sometimes the grading of a problem ends up being incorrect. If you think a grading mistake has been made, but it is in your favor, you are not required to communicate that with the course staff. If you think there is a grading mistake that scores your answer with fewer points than it should have been scored, you may make a "regrade request".
Regrade requests will be accepted for 7 days after the graded assignment is released to the student. For PS assignments, within Gradescope, you will see the option to make a regrade request for an individual problem. Gradescope does not allow regrade requests with auto-graded assignments; thus, for PA regrade requests, you should email the course staff. If the regrade request time period is past (it's more than 7 days since the assignment was graded and released to the student), you will not have an opportunity to request a regrade and you will see that Gradescope will not provide a regrade request button. When you request a regrade, our primary goal is to make sure that the grading was accurate, and change the grading if it wasn't. In the course of regrading a problem, we usually need to look at the entire problem, not just a small piece of it. If we notice grading mistakes other than the one you describe, we will fix all of the ones that we notice. This includes any grading mistake we happen to notice in other problems. We don't go out of our way to find more mistakes, but if we happen to see one, we fix it. After the regrade is completed, your corrected grade may be higher, lower, or the same as your previous grade. Before making a regrade request, make sure that you understand what the question was asking and reassess your answer. Please be specific in what rubric(s) you think were mis-graded. Regrade requests of the type, "I only got 10 out of 25 points and I think I should have received more" aren't as helpful to us as a more specific statement such as, "I didn't receive points for the first rubric, but I think I did address that issue in the second sentence of my explanation".
If this regrade policy is abused during the semester (many students are submitting frivolous regrades), then we reserve the right to start applying a frivolous regrade penalty. We will clearly communicate this if it is to occur.
In this course, there will be a focus on working well together and learning. Students and staff are all expected to treat each other with respect. This includes, but certainly is not limited to:
- Misuse of class platforms (Discord, Piazza, YouTube comments, etc.)
- Disrespectful language or actions to course staff or other students
- Promptness for all deadlines and class meetings
- Quality work
- Excessive frivolous regrade requests
Behave professionally. Never abuse anyone, including the emotional abuse of blaming others for your mistakes. Kindness is more important than correctness. Let our TAs be students when they are not on the clock as TAs.
Consequences of Unprofessional Behavior: Unprofessional behavior, such as misbehavior towards instructors, classmates, or TAs, or causing distractions for other students, can be held against a student when final grades are calculated. The penalty is up to 20% of the final course grade. Multiple infractions can incur multiple such penalties.
We always hope everyone will behave honestly. We know we all are tempted to do what we ought not; if you do something you regret, the sooner you tell us the sooner (and more leniently) we can correct it.
No plagiarism (nor anything like it): You must cite any and every source you consult, other than those explicitly provided by the course itself. Talked to a friend, saw an interesting video, consulted a website, had a tutor? Tell us! Put it in a comment in your code or assignment.
Programming Assignments: Collaboration and Outside Sources: You may discuss the problem and the overall strategy with up to 4 other students, but you must list those people in your submission under collaborators. You may not share code, look at others' code, or help others debug their code. You must write your own code. Not just type it (though you need to do that too): compose it yourself, as your own original work. Please read the sections following this one for more details and clarifications.
Do not seek published or online solutions for any assignments. If you use any published or (which may not include solutions) when completing this assignment, you must cite them by giving a complete citation of each source as a comment at the top of your the program file you submit. Do not submit a solution that you are unable to explain orally to a member of the course staff. Failure to cite a source is a serious violation of academic integrity and may result in a grade penalty (perhaps a severe one).
The sections that follow provide more detail about these rules for PAs.
Write your own code: You must write your own code. Not just type it (though you need to do that too): compose it yourself, as your own original work. We ask you to program to help you learn the content covered in the programming assignment and to help you demonstrate to us your knowledge. This is unlike industry, where you program to create a product. Because it is your mind we are looking to help develop and measure, it is your mind that must do all the work. Working with others is not OK.
Our TAs have been trained to provide help that does not undermine the primary purpose of helping you learn. Other people (tutors, fellow students, etc) have not. As such, you should not give help to your peers nor accept help from others besides course staff.
Understand what you submit: Your understanding is the primary deliverable of our assignments, not the code itself. As such, we may ask you to explain aspects of a solution you turn in, and may dock points if it appears you simply copied someone else's ideas (or just guessed a lot of things until one worked) without understanding them.
Do NOT share your code: You should not share any code from an individual assignment. That means you should not push it to GitHub (or any other site), send a copy to a friend who "just needs help with the last part," turning your screen to your neighbor, coding up solutions together, etc. We know that sometimes you have good intentions -- and we've seen it before -- but it may not always go the way you think, so please do NOT share your code with anyone.
On Problem Sets you are allowed (and encouraged) to collaborate with up to 4 other students, but all work submitted must be your own independently written solution. List the computing ids of all of your collaborators in the collabs command at the top of the .tex file you submit.
Our intention is that collaborators can discuss the problems and possible solutions in a way that helps each member of the group to learn more effectively. We do not allow collaborative activities that make it easier for each individual to write-up a solution for submission. To avoid this, you are not allowed to share written notes, documents (including Google docs, Overleaf docs, discussion notes, PDFs), or code. Talk to increase your understanding of the problem and how to solve it, then take what you've learned from that collaboration and write-up your own solution.
Do not seek published or online solutions for any assignments. If you use any published or online resources (which may not include solutions) when completing this assignment, you must cite them by giving a complete citation of each source in the sources command at the top of the .tex file you submit. Failure to cite a source is a serious violation of academic integrity and may result in a grade penalty (perhaps a severe one).
Do not submit a solution that you are unable to explain orally to a member of the course staff. Any solutions that share similar text may be carefully examined to see if course policy has been violated, and this process may include interviews with students where they can explain their solutions.
It would probably go without saying if we didn't say it, but no assistance may be given or received on any supervised evaluation or online quiz unless specifically announced otherwise by the professor (or another proctor of the evaluation).
Generative artificial intelligence tools -- software that creates new text, images, computer code, audio, video, and other content -- have become widely available. Well-known examples include ChatGPT for text and DALL-E for images. The course policy described here governs all such tools, including those released during our semester together. You may use generative AI tools on assignments in this course only when we explicitly permit you to do so. Otherwise, you must refrain from using such tools.
If you do use generative AI tools on assignments in this class -- when you are told you are allowed to do so -- you must properly document and credit the tools themselves. Cite each tool you used, in the form shown for a hypothetical tool:
Intelligent Sage 3, version 3.1. Accessed from http://intelligentsage.com
Additionally, please include a brief description of how you used the tool. Please include the prompt or prompts you gave the tool. Failure to cite the use of the tool as a source is a serious violation of academic integrity.
If you choose to use generative AI tools -- again, only when told you are allowed to do so --, please remember that they are typically trained on limited datasets that may be out of date. Additionally, generative AI datasets are trained on pre-existing material, including copyrighted material; therefore, relying on a generative AI tool may result in plagiarism or copyright violations. Finally, keep in mind that the goal of generative AI tools is to produce content that seems to have been produced by a human, not to produce accurate or reliable content; therefore, relying on a generative AI tool may result in your submission of inaccurate content. It is your responsibility -- not the tool's -- to assure the quality, integrity, and accuracy of work you submit in any college course.
If you use generative AI tools to complete assignments in this course, in ways not explicitly authorized, we will apply the course's policies on academic integrity appropriate to your specific case. In addition, you must be wary of unintentional plagiarism or fabrication of data. Please act with integrity, for the sake of both your personal character and your academic record.
If we believe you have acted dishonestly, including sharing or receiving code, we will communicate this fact to you and propose a penalty. If you have information we lack, please share that with us; we may thereafter change our belief and/or proposed penalty. Penalties may be up to and including a failing grade (F) in the course, independent of and in addition to the operations of the Honor System.
- A typical first offense penalty: A zero (0) on the assignment in which the dishonesty or plagiarism occurred
- A typical second or later offense penalty: an automatic F in the course.
If the case is particularly egregious and beyond our comfort level handling in-course, we will refer the case to the University Honor System.
Bad things happen. People forget things and make mistakes. Bad days coincide with due dates. etc. We aim to have our extension policy, above, help to cover these types of issues. If you believe that circumstances warrant an change in deadline, a second chance, or some other accommodation in order to more accurately synchronize grade with knowledge, come talk to your professor and we'll resolve the situation as best we can. Note that there needs to be a significant reason for this, as we already are providing a free 4 day extension.
It is our goal to create a learning experience that is as accessible as possible. If you anticipate any issues related to the format, materials, or requirements of this course, please meet with one of us outside of class so we can explore potential options. Students with disabilities may also wish to work with the Student Disability Access Center (SDAC) to discuss a range of options to removing barriers in this course, including official accommodations. We are fortunate to have an SDAC advisor, Courtney MacMasters, physically located in Engineering. You may email her at [email protected] to schedule an appointment. For general questions please visit the SDAC website. If you have already been approved for accommodations through SDAC, please send us your accommodation letter and meet with me so we can develop an implementation plan together.
Note that we expect most (or perhaps all) accommodation requests will be handled by our extension policy, above.
It is the University's long-standing policy and practice to reasonably accommodate students so that they do not experience an adverse academic consequence when sincerely held religious beliefs or observances conflict with academic requirements.
As with the previous section, we expect most (or perhaps all) accommodation requests will be handled by our extension policy, above.
Students who wish to request academic accommodation for a religious observance should submit their request to us by email as far in advance as possible. Students who have questions or concerns about academic accommodations for religious observance or religious beliefs may contact the University's Office for Equal Opportunity and Civil Rights (EOCR) at [email protected] or 434-924-3200.
The University of Virginia is dedicated to providing a safe and equitable learning environment for all students. If you or someone you know has been affected by power-based personal violence, more information can be found on the UVA Sexual Violence website that describes reporting options and resources available.
The same resources and options for individuals who experience sexual misconduct are available for discrimination, harassment, and retaliation. UVA prohibits discrimination and harassment based on age, color, disability, family medical or genetic information, gender identity or expression, marital status, military status, national or ethnic origin, political affiliation, pregnancy (including childbirth and related conditions), race, religion, sex, sexual orientation, or veteran status. UVA policy also prohibits retaliation for reporting such behavior.
If you witness or are aware of someone who has experienced prohibited conduct, you are encouraged to submit a report to Just Report It or contact EOCR, the office of Equal Opportunity and Civil Rights.
If you would prefer to disclose such conduct to a confidential resource where what you share is not reported to the University, you can turn to Counseling & Psychological Services ("CAPS") and Women's Center Counseling Staff and Confidential Advocates (for students of all genders).
As your professors and as people, know that we care about you and your well-being and stand ready to provide support and resources as we can. As a faculty member, we are responsible employees, which means that we are required by University policy and by federal law to report certain kinds of conduct that you report to me to the University's Title IX Coordinator. The Title IX Coordinator's job is to ensure that the reporting student receives the resources and support that they need, while also determining whether further action is necessary to ensure survivor safety and the safety of the University community.
Engaging in your career development is an important part of your student experience. For example, presenting at a research conference, attending an interview for a job or internship, or participating in an extern/shadowing experience are not only necessary steps on your path but are also invaluable lessons in and of themselves. I wish to encourage and support you in activities related to your career development. To that end, please notify me by email as far in advance as possible to arrange for appropriate accommodations.
You have many resources available to you when you experience academic or personal stresses. In addition to your professor, the School of Engineering and Applied Science has staff members located in Thornton Hall who you can contact to help manage academic or personal challenges. Please do not wait until the end of the semester to ask for help!
- Lisa Lampe, Assistant Dean for Undergraduate Affairs
- Georgina Nembhard, Director of Student Success
- Courtney MacMasters, Accessibility Specialist
- Free tutoring is available for most classes.
- Kelly Garrett, Assistant Dean of Students, Student Safety and Support
- Elizabeth Ramirez-Weaver, CAPS counselor
- Katie Fowler, CAPS counselor
You may schedule time with the CAPS counselors through Student Health. When scheduling, be sure to specify that you are an Engineering student. You are also urged to use TimelyCare for either scheduled or on-demand 24/7 mental health care.
The Center for Diversity in Engineering (CDE) is a student space dedicated to advocating for underrepresented groups in STEM. It exists to connect students with the academic, financial, health, and community resources they need to thrive both at UVA and in the world. The CDE includes an open study area, event space, and staff members on site. Through this space, we affirm and empower equitable participation toward intercultural fluency and provide the resources necessary for students to be successful during their academic journey and future careers.
Syllabus Note: This syllabus is to be considered a reference document that may be adjusted throughout the course of the semester to address necessary changes. This syllabus can be changed at any time without notification; we will announce any major changes. Final authority on any decision in this course rests with the professors, not with this document.
Research: Your class work and related data might be used for research purposes. For example, we may use anonymized scores from student assignments to compare to other student performance data. Any student who wishes to opt out can contact the course email. This has no impact on your grade in any manner.