Logistics

Textbook

A collection of online resources will be used, but no textbook will be required. Current blog posts and videos about the state of various technologies and best practices will be included in some assignments. Peruse them to learn something. If you have good resources that you find along the way - contribute!

Auditing

Unfortunately, due to the nature of the class and our classroom size, auditing the class will not be permitted. All class material will be posted here online though!

Slack

We will use Slack, an online collaborative tool for most class messaging and help. Details in class. We will also write Slack integrations!

Grading

short assignments: 10%

labs: 35%

quizzes: 5%

group presentation and workshop: 10%

final project: 35%

class participation: 5%

late penalty:

1 emoji per day

2 allowed re-submits (capped at 👍, only available before the final projects start)

for any assignment, you can add extra credit during 3 days after it is due

2 x 24 hour extension (comment on issue submission to indicate activation)

👀 added for any submission fails (unshared links, empty repos, wrong urls)

Group Final Project Grading

Grading of some collaborative team-based work (the final project) will be done based on GitHub pull requests, GitHub Issues, codes committed, and other things such as design contributions. Using version control will become second nature to you. Proper git flow will be introduced and will be required for all groups. Since projects are a team effort, you will earn a group grade along the way with a modifier for individual performance. In extreme cases, individual final project grades may differ substantially from the group grades. For instance, if you were the star performer on the team and committed the large majority of code, but your teammates didn’t pull their weight, so the project wasn’t quite up to standards, the team might receive an 80 for the project milestones, but you might get a 100 scaled for contributions. Alternatively, if you slacked and contributed only a few lines to some documentation to boost your git commit count, we will notice, and you might get a 0 even if your teammates pulled off an impressive project without you, and the team received a 98 overall.

Software

We will use open-source development tools and frameworks. Note: These will work out of the box in macOS and Linux and should work ok with a bit of coercion in Windows (tested in Win10). (details in short assignment 1)

Honor principle – Not your standard warning!

We understand that a large part of software engineering involves learning from examples, searching for solutions, working with ChatGPT and other AI tools, and integrating your research into your own code. We want you to learn from all available resources while still learning the concepts necessary to generate your own solutions and become capable software engineers. You should understand all the code that you write/integrate, and be able to walk through it. Most critically, to avoid an Academic Honor Violation you need to cite any sources that you use in your process.

The Internet

The Internet will be a large source of information and help to you as you do your assignments in this class. We want to encourage you to scour the internet / stackoverflow / chatGPT for help, but you must credit any solutions you find in comments in your code specifying where you found them and what you took from them. If you copy/paste code without attribution, you are violating the Academic Honor Principle. You will not be penalized for copied code as long as it is properly attributed. Obviously don’t copy/paste the whole project, as you may not get full credit, but even if you do at least you will not facing the COS.

Student Collaboration

For the short assignments and the labs, you may verbally collaborate as much as you want. However, the code that you commit (turn in), is ideally created, typed, documented, and output generated, by you. You may consult freely with instructors and classmates but you should work individually when actually coding. If you copy or look at code from another current or previous student for “debugging” purposes, it will be considered a violation of the Academic Honor Principle unless you cite that you have done so in the code. All collaboration with another student should be documented in the comments and cited, exactly as you would with an internet resource. If there is any question about whether you wrote the code yourself or were inspired by or copied off of others, just CITE IT. You may lose some points for not implementing that specific component yourself, but properly cited code will not be considered a violation of the Academic Honor Principle.

Citation Format

Make your in-code citations look something like this (policy adapted from MIT Integrity Handbook):

// adapted from: http://stackoverflow.com/someurl
// this method does x and y

or

// copied off of Cameron Howe's code for this assignment
// this method does x and y

Honor Code Violation Examples

These are designed to serve to help illustrate the various situations that might arise and whether they are or are not violations of the Academic Honor Code. Violations will be reported to the Committee on Standards. Regardless of the outcome of the COS hearing, we reserve the right to assign a failing grade on an assignment where we suspect an honor code violation occurred.

You ask ChatGPT to help you with your homework, it spits out some decent-looking code and you copy/paste it in. You don’t really know what it is doing, but ChatGPT seems very confident it will fix your problem/get you an A. Your assignment may or may not work as intended and may or may not attempt to take over the world as part of an AI uprising. Regardless, this is a violation of the Honor Code unless you mark the code with a comment citing ChatGPT for any help it provided. CITE IT, and you will be fine.

You find a block of code online that you don’t quite understand but it seems to work either when you make your code look similar or you copy/paste it in. Either because you are embarrassed or careless, you do not cite where you got the code from. This is a violation of the Honor Code. CITE IT, and you will be fine.

It is midnight, and the assignment is due, and your friend sends you a block of code to help debug. You try to not look at it, but you end up turning in something very similar to what your friend sent. This would be an attribution error and an Academic Honor Code violation if you did not cite it. CITE IT LIKE YOUR LIFE DEPENDS ON IT. If you had turned it in with an attribution: “I whole-heartedly copied this from my friend N”, we would deduct points from your assignment, but that is it!

You and a couple of friends are working together on an individual (not team) assignment. You are talking about it and planning it out on the whiteboard. If you are using natural spoken language you are ok. If you are writing code on the board or telling each other what to type in, that is a violation of the Academic Honor Code if you do not cite it. If you have not properly attributed work to your friend and you end up with the same code you would face a COS hearing to disentangle what happened. These hearings are brutal with back-stabbings, tears, and ruined friendships. Why risk it? The best approach when talking about your assignments together is to do it as if you were helping each other learn: ask questions, give hints. That is why we are all here after all. If you type in what someone tells you to type, CITE IT.

But officer I panicked!

If you are stuck: ask for an extension, come to office hours, email or slack your Instructor and your TAs, learn some humility and accept that you might need help. Asking for help is one of the greatest skills that one can possess, and if you get anything from this class is that it is OK to ask for help.

Please do not create a horrible situation for all of us by copying code without citing the source. Our job is to help you learn. You will not be penalized for asking.

Special Accommodations

Students requesting disability-related accommodations and services for this course are encouraged to schedule a phone/video meeting with me as early in the term as possible. This conversation will help to establish what supports are built into my online course. In order for accommodations to be authorized, students are required to consult with Student Accessibility Services (SAS; student.accessibility.services@dartmouth.edu; SAS website; 603-646-9900) and to email me their SAS accommodation form. We will then work together with SAS if accommodations need to be modified based on the online learning environment. If students have questions about whether they are eligible for accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

Wellness

We recognize that the academic environment at Dartmouth is challenging, that our terms are intensive, and that classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including: your undergraduate dean (http://www.dartmouth.edu/~upperde/), Counseling and Human Development (http://www.dartmouth.edu/~chd/), and the Student Wellness Center (http://www.dartmouth.edu/~healthed/). I encourage you to use these resources and come speak with me to take care of yourself throughout the term.

Religious Observances

Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me before the end of the second week of the term to discuss appropriate accommodations.

Video Recording

From the Dean of the Faculty to students regarding the recording of class sessions:

By enrolling in this course,
a) I affirm my understanding that the instructor may record meetings of this course and any associated meetings open to multiple students and the instructor, including but not limited to scheduled and ad hoc office hours and other consultations, within any digital platform, including those used to offer remote instruction for this course.
b) I further affirm that the instructor owns the copyright to their instructional materials, of which these recordings constitute a part, and my distribution of any of these recordings in whole or in part to any person or entity other than other members of the class without prior written consent of the instructor may be subject to discipline by Dartmouth up to and including separation from Dartmouth.

By enrolling in this course, I hereby affirm that I will not make a recording in any medium of any one-on-one meeting with the instructor or another member of the class or group of members of the class without obtaining the prior written consent of all those participating, and I understand that if I violate this prohibition, I will be subject to discipline by Dartmouth up to and including separation from Dartmouth, as well as any other civil or criminal penalties under applicable law. I understand that an exception to this consent applies to accommodations approved by SAS for a student’s disability, and that one or more students in a class may record class lectures, discussions, lab sessions, and review sessions and take pictures of essential information, and/or be provided class notes for personal study use only.
If you have questions, please contact the Office of the Dean of the Faculty of Arts and Sciences.

By enrolling in this course, I hereby affirm that I will not under any circumstance make a recording in any medium of any one-on-one meeting with the instructor without obtaining the prior written consent of all those participating, and I understand that if I violate this prohibition, I will be subject to discipline by Dartmouth up to and including expulsion, as well as any other civil or criminal penalties under applicable law.

If you have any questions about any of these prohibitions or instructions, please consult your Dean’s Office.

Deprecated COVID-19 Addendum

While the COVID-19 pandemic has already changed how this course is structured, it has the potential to result in further personal impact which may prevent you from continuing engagement in the class. This may be due to contraction of the disease by you or a loved one, increased familial responsibilities, financial difficulties, or impacts on your mental/emotional health.

We have structured the course so that these disruptions will not necessarily prevent you from successfully completing this course. First, lectures while conducted via Zoom will also be available for watching later. This will enable flexible viewing of the course content. Second, we will schedule opportunities for live interaction with the Professor and the TAs during diverse times throughout the week. Third, the workshops and labs are all structured to be done on your own time from home. And finally, the group project is designed to be facilitate remote work using industry standard collaboration tools.

In the event that you are directly or indirectly impacted by COVID-19 in such a way that will affect your performance in the course, it is imperative that you reach out to the instructor as soon as possible. You may also reach out to your undergraduate Dean if that would make you more comfortable. We cannot assist you if we don’t know there is a problem. Our first priority is your health and security. We will work to put you in touch with appropriate resources to assist you. In addition, appropriate accommodations (for example: deadline extensions and/or extra office hours) will be implemented.