COS-463 Assignments

Assignment Introduction

We will have five assignments in total, spanning from MAC-layer protocols, to bit error corrections, and then to Physical layer signal modulation and demodulation and wireless channel estiamtion.

Programming Assignments

All assignments are due at 11:59 PM on their assigned days.

Assignment Jupyter Notebook Due Date
preview Assignment 1 2018-03-01 (Submit)
TCP review: Congestion control QA
Assignment 2 2018-03-16 (Submit)
Assignment 3 2018-03-16 (Submit)
Assignment 4 2018-04-26 (Submit)
preview Assignment 5 2018-05-15 (Submit)

Assignment Software

All assignments will be done using the Jupyter Notebook and python 3.5. All necessary software is installed on the lab laptops, but if you would like to work on the labs on your own computer here is a list of software that we use. If you are using a Linux-based operating system, most of the necessary software can be installed using your package manager. The libhackrf, SoapySDR, and SoapyUHD libraries are needed for interfacing with the HackRF hardware and may need to be installed from source if they aren't included in your operating system's package managers. You can get the sources here and here. Please contact the TAs if you have any trouble installing the software, but note that Ubuntu is the only officially supported OS.

Assignment Submission

We will use CS Dropbox to submit assignments. Please follow the instructions given in each assignment for testing and submitting your work.

Late Submission

You should submit your work on an assignment (electronically) before its due time. All assignments will be due at 11:59pm on their selected days.

If you submit your work late, we will award you a fraction of the score you would have earned on the assignments had it been turned in on time, according to this sliding scale:

For example, if you should have earned 8/10 points but submitted 36 hours late, you will instead earn 6.4 points.

You are also allowed five “free” late days during the semester (that can be applied to Assignments 1 through 4 inclusive; Assignment 5 is due on Dean's Date and cannot be turned in late). You do not need to tell us that you are applying your "late day" -- we'll remove the late penalty at the end of the semester from the assignment that benefits you the most.

We will grant no-penalty extensions only in the case of illness (with a doctor's note) or extraordinary circumstances (with the consultation of the Dean of your residential college). If illness or an extraordinary circumstance will cause you to submit an assignment late, then you should discuss the matter with your instructor as soon as possible.

Please plan your work on the assignments so that travel, interviews, athletics, touring, student clubs, extracurricular activities, religious holidays, etc. do not cause you to submit them late. None of the above reasons nor a heavy academic workload constitute an extraordinary circumstance.

Version Control through Bitbucket

Because accidents can happen and it is good practice, we suggest you to use a version control system to maintain your code for this course. You can setup an account with Bitbucket, a web-based hosting service for projects that use the git revision control system. Bitbucket allows you to have an unlimited number of free private repositories, so please take advantage of this and do not make your code public. We have put together instructions on how to set up an account with Bitbucket as well as pointers on how to use git.

Commit and push your changes often. You alone bear the responsibility in making regular data backups, so that you don't lose your data.

Instructions for setting up a Bitbucket account

How do I git?

This page has some useful tutorials on git: Git Tutorials
In particular, tutorials 1 and 5 will be most useful for this course.

The basic git workflow in the shell (assuming you already have a repo set up):

Finally, Bitbucket 101 is another good resource.

Collaboration Policy

Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate; the program must be your own work.

Do not, under any circumstances, copy another person's program, comments, README description, or any part of the submitted assignment. This includes character-by-character transliteration of another works (whether inspected visually or copied digitally), but it also includes derivative works (i.e., by renaming variable names or subtly shifting around statements in order to try to hide that copying has occurrred). You are also not allowed to use other people's code, comments, or results, even when "citing" them -- all work must be your own. This includes work done by other Princeton students this or past semesters, as well as any other code you find online.

Writing code for use by another or using another's code in any form is academic fraud and will be dealt with firmly according to Princeton's disciplinary policies. You are also responsible for ensuring that the code you write for the assignments is not readable by others, which includes sharing with students in future years or posting publicly on websites like github.

Last updated: 2018-05-14 08:21:42 -0400 [validate xhtml]