CS 111 Winter 2021 | Course Reference | Course Objectives | Schedule | Project Guide

CS 111 Winter 2021
Project Guide

The projects

Week 1

P0. Warmup

Week 2

P1A. I/O and IPC

Week 3

P1B. Compressed Communication

Week 4

P4A. Embedded System Bringup

Week 5

P2A. Mutual Exclusion

Week 6

P2B. Contention

Week 7

P4B. Sensors and communication

Week 8

P3A. File System interpretation (optionally in 2 person teams)

Week 9

P3B. File System analysis (optionally in 2 person teams)

Week 10

P4C. IOT Secure communication


There will be a total of five projects for this class. 


Project 0 is meant primarily to give you a self-evaluation to determine if you are sufficiently prepared to take the class.  The other projects relate to important concepts and system components that you should understand after taking this class.  The projects will require substantial programming and are intended to be challenging.  All projects are to be performed individually. The projects will be supervised primarily by the TAs.  Questions about projects should be directed to them, rather than me, unless the TAs have already failed to address your question.  The TAs for the Winter 21 offering will be


·         Tianxiang Li (tianxiang@cs.ucla.edu),

·         Tengyu Liu (24.jason.5@gmail.com), and

·         Alexandre Tiard (alexandre.tiard@gmail.com). 


Contact information for them will be made available later.  Project 4 concerns embedded system design and touches on issues of integrating sensors into a system, distributed systems, and security.  It will require you to obtain a particular piece of hardware, an Intel Beaglebone Green Wireless kit, which includes several sensors.  These kits are available from various sources and are likely to cost around $100.  You will be provided with further information about exactly what you will need and how to obtain it before the class starts.  Elements of project 4 are due as early as the end of the 4th week of class, and require you to have obtained the hardware to complete them.  So I recommend you buy it immediately.


Projects follow quickly after the readings and lectures in which the associated principles are presented. Project deliverables are spread (relatively) uniformly throughout the course (one per week). This is done to keep you from getting in trouble when you discover that you cannot complete a three-week project in two days. Each deliverable is due a few days after the associated lab session, and most of them require you to encounter, recognize and solve one or two non-trivial problems. If you start the projects before the associated lab session, you will have already encountered the difficulties, and we can help you during the lab session. If you wait until the lab session to start a project, the session will be over before you have even encountered the real problems, and you will have to solve them on your own.


Projects 2 and 3 are heavily based on the reading and lectures, and would be difficult to do before the associated material (on synchronization and file systems) has been covered. Projects 0, 4 and (to a lesser extent) 1 are much less dependent on reading and lectures and can be started at any time. You will find that, if you start each project as soon as possible, you will earn much better project scores.

Evaluation of your work

Each of your projects will be graded using a somewhat different scale, though all will bear the same weight on your final course grade. Some projects are broken into parts, while others are single programs. When you write code, it is naturally your primary goal to write a program that works correctly; however, writing a correctly-working program is not your sole objective. Each of your programs will be evaluated for style and quality of approach, in addition to correctness. Some projects will limit what features of a particular programming language you're permitted to use, and your score will suffer if you stray away from the features.

We reserve the right to assign zero points to any program that cannot be compiled and/or executed.


Late work

No slip days are allowed. Submissions that are X days late will be deducted 2X-1 points.

Submitting your assignments

When you complete each project, you must submit it to us electronically.

You are responsible for submitting the version of your project that you want graded. We will grade the most recent submission that you made before the deadline. Accidentally submitting the wrong version will not be considered grounds for a regrade.

Academic honesty

The policy

I expect all students to follow the UCLA Student Conduct Code .  This code prohibits cheating, fabrication, multiple submissions, and facilitating academic dishonesty. You can find further information about this code at the Student Guide to Academic Integrity.  The Office of the Dean of Students offers a workshop on academic integrity if you wish to understand UCLA’s policies on this issue more thoroughly.


Group study is often useful and is encouraged, but projects are to be performed by each student individually, except for project 3, which can be performed with one partner.  You are not permitted to use any other students’ code or written material in your projects (other than your partner’s for project 3), and you should not give your code or written material to any other students.  You are not permitted to post your code to Github or to other web sites.  In cases where multiple projects show signs of plagiarism, all involved parties will be reported to the Dean, so even if it was your work that was copied, you could still face consequences.  Brief quotations from other sources are sometimes acceptable in project submissions, but submissions should be predominantly your own original work.  If you include any material in your project submissions that is obtained from an online source, book, or other place, you must specify the sources for these parts of your submitted work.


If you have questions about the academic honesty policy, please discuss them with me. Be warned that we take academic honesty very seriously. We look for plagiarism in various ways.  If you are able to find project solutions on line, we are likely to find them, too.  I report all suspected cases to the Dean's Office, as university policy requires. Once reported, the matter is in the hands of the Dean, and I cannot further influence it.  I strongly advise that you take no chances on academic honesty issues.  If an issue of this kind is unclear to you, talk to me or to the TAs.