Grades

  • Exercises: 65%
  • Final Project: 35%

Success

Assignments

This is a hands-on course, and the majority of your grade will be determined by small regularly-assigned projects, which mostly involve writing some code. These assignments will take more than one day to complete. That is why the schedule of due dates give multiple weeks for each programming assignment. I STRONGLY recommend that you begin working on an assignment the first week we begin covering pre-requisite material in class. If you wait until the due date before beginning work on an assignment, you will struggle to complete it in time. Planning ahead can save you a lot of heartache in this course. If you are frequently having trouble with staying on top of your coursework, then please contact the professor as soon as possible to work on a solution before it becomes a problem.

There is ample opportunity to collect extra credit points throughout the course by completing bonus exercises given out in the regular assignments. If answered correctly, bonus exercises earn you extra points toward the overall assignment total, without increasing the "maximum" number of target points for the assignment. Besides the calculation of an assignment's "maximum" number of points, there is no distinction between extra credit and normal points when calculating grades. For example, completing a 10-point regular exercise and skipping a 10-point bonus exercise counts the same as skipping the 10-point regular exercise and completing the 10-point bonus exercise. It is also very possible to earn more than 100% on each assignment, by earning a number of points that is larger than the "maximum" target. All the individual assignment grades (whether above or below 100%) will be added together to calculate the final assignment grade.

All assignments will be turned in online, using GradeScope, via Canvas. If there are multiple files to turn in (such as a project directory containing code files), you may turn in a single archive that includes the entire project directory, or attach multiple files individually. If there is a written portion to the assignment, then turn in your writing in a portable document file format (e.g. pdf, txt, markdown). Microsoft Word and other similar word processor formats should be converted to a portable format for turning in. Homework in an inappropriate format (in particular, if you turn in code as a non-executable file, such as a PDF) will not be graded.

For programming assignments, your grade is automatically calculated using the testing suite in the provided project template. You can run these tests locally while working on your homework to preview what your score will be. When you are happy with your score, turn in your code on GradeScope, which will run the same tests and automatically record your grade. You may resubmit an automatically-graded programming assignment at any time to be regraded, without penalty. If you do not see a grade (or see a 0 grade) within 5-10 minutes, then likely something has gone wrong in the autograding process. It is your (the student's) responsibility to ensure that their coding submissions have been graded and recorded correctly. If you think something has gone wrong, then contact the instructor for help with correcting the submission process.

Final Project

The final project gives you the chance to apply the skilled you learned in this class to a problem that is relevant to you. It is also the best test on your mastery of those skills and concepts when given complete freedom. As such, the final project is mandatory to pass the class. Turning in nothing for the final project, or otherwise getting a 0, will result in an automatic failure regardless of the extra credit earned in the regular assignments in the first part of the course.

Attendance

Students are required to attend class regularly, as regular attendance is one of the most important contributors to student success. However, students may occasionally need to miss class due to illness, emergency, or caring for a sick family member. In such cases, you are responsible for notifying me of your absences and working with me to arrange to make up any missed work.

A note on Zoom Participation: Classroom lectures will be recorded, and available for (re)viewing afterward. Occasionally, certain lectures may be moved online instead of the regular in-person meeting. These special online lectures will be announced by email in advance. Because I believe that the class will be more engaging if we can see one another, I strongly recommend that students keep their cameras on during a virtual class unless you have a valid reason not to, which you should discuss with me ahead of time.

With that being said, this is an in-person class, where the professor and students meet together in the same physical location, and the online videos serve as only a backup method for special circumstances and studying purposes. In the event that no students are present physically in the classroom at the scheduled time and place, and no special arrangements have been made in advance, then the professor may consider that the lecture has zero attendance and elect to skip lecturing in an empty room. If you are able to attend a lecture in-person, it is in your best interest to do so, both for the significantly improved learning experience as well as ensuring that the class has non-zero attendance.

Student Mental Health and Wellbeing

We are a campus that cares about the mental health and well-being of all individuals in our campus community. Your personal health and well-being can impact your success in this course. Students sometimes experience mental health concerns or stressful experiences that interfere with academics and have a negative impact on everyday life. If you or someone you know are experiencing mental health challenges at UMass Lowell, please contact Counseling Services. Their services are free and confidential, and same day appointments are available.

I am available to talk with you about stresses related to your work in my class. Furthermore, I can assist you in reaching out to any one of a wide range of campus resources, including:

  • Counseling Services provides crisis intervention, assessment, referrals, short-term individual counseling, group therapy, and on-call clinicians outside of business hours. They are located at University Crossing Suite 300 and their 24/7 phone number is 978-934-6800.
  • UMatter2 is a university-wide initiative to support students and promote mental health. The office may be reached at 978-934-6671.
  • Consider also reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

    Rules and Information

    Academic Integrity and Plagiarism

    All students are advised that there is a University policy regarding academic integrity. Students are responsible for the honest completion and representation of their work.

    Plagiarism means taking credit for work you have not done yourself, or presenting someone else's work as your own. This may take many forms, such as copying answers from another student in class, automatically generating solutions using AI (see below), or copying projects from online repositories like GitHub.

    Students are welcome discuss the exercises with one another. However, each student is responsible for their own work and completing all exercises independently. Copying another students solutions (either by sending files directly or copying down from a screen), or from some other source (e.g. the internet), and turning them in as their own work constitutes plagiarism, and will result in a failing grade. What specific actions constitute plagiarism is left to the discression of the instructor, and will not be fully enumerated here. If in doubt, please ask before doing something that seems fishy.

    That said, there are many instances where using a library found in the standard library or Hackage is permitted or even expected. Realistic software is not an island, and neither are you. In general, if an exercise asks you to write some particular function piece of code, then you should write it yourself. If some details required to implement that code are left unspecified (e.g. sorting a list), then it is okay to use a standard or Hackage library for that part. If there is any doubt about whether or not it is okay to use a library for implementing part of an exercise, please ask.

    In larger projects (namely, your final project), it may make sense to incorporate code written by others. It is your (the student's) responsibility to make it clear what code was developed by you and what code is from others (and, specifically, from whom). This is self-documenting when you include a package from Hackage in the formal Cabal/Stack project describtion. In other cases, say if you downloaded a GitHub repository to use or extend with new features, you must clearly document all sources of code you copied or modified, the original author(s), and where it was obtained, and how it was used in your project.

    All automatically-calculated grades are given pending a potential investigation for suspected plagiarism. If it is found that a solution has been plagiarized, there will be a penalty based on the severity of the plagiarism. In the worst case of complete plagiarism (for example, downloading a project off GitHub, erasing the original author information, and turning it in as if it was your own work) can result in a negative grade (worse than turning in nothing).

    Posting answers to homework exercises to any publicly-visible website or location also counts as plagiarism. Future students deserve the chance to fully engage with the homework assignments on their own. If you are found publicly posting any answers to a homework assignment, it will be treated the same as if you provided your answers to another student of this same class.

    A Note on Plagiarism and the Use of AI

    Generative AI has become a new powerful productivity tool for writing code used in industry. This class is meant to prepare you for real-world coding scenarios. However, this class is also meant to be a supportive and safe practice space to learn new skills. Overuse and misuse of AI can rob you of the opportunity to actually learning the fundamental skills you need to be a successful and productive programmer, especially since AI can and will be wrong and misleading at times. This is your chance to develop those skills now, so that when you graduate and become a future programmer, you have the knowledge to successfully write code and direct AI.

    Therefore, the policy in this class is that: AI coding agents count as other humans (another student or external programmer) for evaluating cases of plagiarism. Any use of or interactions with AI will be treated the same as if that same interaction occured with another student in class. As a quick rule of thumb to determine if some use of AI is acceptable, consider: "would it be okay if I did this with another student?" Some things, like asking questions about homework problems, researching ideas and libraries, or general system-administrative tasks ("getting your computer set up to write and compile code") are all perfectly fine things to do with another student. Uploading the assignment documents and asking the AI to produce the answers for you is plagiarism, because copying another students answers is plagiarism.

    One exception of something that is okay to do with an AI agent, but is not okay with another student in the class, is to show it the code you have written and to ask for feedback. For example, you might do this to debug problems, find better alternate solutions, or to help follow idiomatic coding style. That's because the AI is not taking this class, and so sending it your code does not give answers to another student (which would be plagiarism).

    In the context of the final project, the use of AI agents will be treated as other "team members" as if it is a group project. However, be aware that all group projects (whether a team of all humans, or human with AI) need to have a significantly larger scale than individual projects, so that each team member has enough work to contribute toward their responsibilities to earn enough credit toward their grade. As a rule of thumb, a group project with two team members should accomplish about twice as much as an individual project, since each team member should do as much work as it would take to complete a smaller project on their own. When incorporating an AI team member, it is vitally important to clearly document each team member's responsibilities, what code was contributed directly by (each) student, and what code was contributed by the AI agent. At a minimum, the high-level break-down describing each team member's role needs to be described in an easy-to-find location (such as a top-level README.md). An easy way to keep track of who wrote each part of the project is to develop your project using standard version control (like git), and to submit the complete repository along with its log of commits showing authorship of each change.

    If it is found that you have plagiarized any part of the final project or regular assignments with AI — by having an AI agent write code for you and claiming it is code you wrote, instead of properly giving credit to the real author — then this will be treated as if you have copied your code directly from another student, and will incur the same penalties.

    Credit Hour Policy

    Federal definition of a credit hour requires that for every course credit awarded, a course must offer 15 hours of instructor-led course activities and 30 hours of out-of-class student work. This means that a standard 3 credit hour course requires 45 hours of instructor-led course activities and 90 hours of out-of-class student work.

    University Privacy Statement

    UMass Lowell recognizes the importance of mutual trust between students and faculty. Massachusetts is a two-party consent state, which means it is illegal to record someone without their permission. Recordings of classroom lectures are the intellectual property of the instructor. Instructors have the right to prohibit audio and video recording of their lectures, unless the requesting student is registered with Disabilities Services and recording of class sessions is an approved accommodation. In addition, sharing or selling recordings of classroom activities, discussions or lectures with any other person or medium without permission of the instructor is prohibited.