-
Notifications
You must be signed in to change notification settings - Fork 0
/
assignments.qmd
174 lines (101 loc) · 12.9 KB
/
assignments.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
---
title: "Assignments"
---
# Homeworks
Homework solutions should be submitted by 6:00 p.m. on the due date (with an automatic twenty-four hour extension). Please take note of the distinction between the assignment deadline and the automatic extension. Questions about the assignment may not answered as promptly after the deadline, particularly when the extension extends into the weekend. Early submissions are welcome.
## Homework Assignment 4
**Due Friday, November 17, 2023**
- [Handout](https://github.com/csci5535-f23/hw04/blob/main/hw04.pdf)
## Homework Assignment 3
**Due Friday, November 3, 2023**
- [Handout](https://github.com/csci5535-f23/hw03/blob/main/hw03.pdf)
## Homework Assignment 2
**Due Friday, October 6, 2023**
- [Handout](https://github.com/csci5535-f23/hw02/blob/main/hw02.pdf)
## Homework Assignment 1
**Due Friday, September 22, 2023**
- [Handout](https://github.com/csci5535-f23/hw01/blob/main/hw01.pdf)
## Homework Assignment 0
**Due Friday, September 8, 2023**
- [Handout](https://github.com/csci5535-f23/hw00/blob/main/hw00.pdf)
# Class Participation and Online Discussion
It is important to attend class and read the readings. Lively class discussion is also important, which includes in-class participation, as well as participation in the online forums.
Students are expected to be active participants in the online forums (e.g., around at least 1 substantive post per class meeting). You may and are encouraged to post comments or questions about the reading before the class where we will cover it. Posting early will help focus our discussion.
Here are some examples of good comments:
* Questions about the reading or the class discussion.
* Thoughtful answers to other people's questions.
* Clarification of some point discussed in class.
* What you think is the main point or key idea in the reading set.
* An idea of how some work could be improved from the reading or class discussion.
If everything from a class meeting seems clear to you, try to come up with a question that tests your classmates' understanding. Put yourself in the position of an instructor!
Overall, the intent is for you to to take a moment to reflect upon the day's reading or class discussion. I will read all posts, but I may not respond to all of them (e.g., if I believe your classmates' answers are sufficient).
# Final Project
## Project Guidelines
Students are expected to select and complete a substantial course project during the semester on a topic related to the class.
Projects should be done in groups of **two** (other group compositions must be discussed on a case-by-case basis). The expectations will naturally depend on the number of group members.
The first step is to submit a _project proposal_. The proposal should explain what you expect to learn from the project (i.e., why is it interesting to you?) and should include a work schedule. Make sure to budget time for writing a short _project paper_ (~10 pages) describing the project and for preparing a short (~15-20 minutes, depends on number of projects) _project presentation_ during the last week of classes. The main purpose of the proposal is for me to give you feedback on its feasibility.
The main goal of the project is to allow you to customize the content of the course to your own interests. The goal is not to force you all to produce novel results in one semester. Course projects like this often lead to collaborations that eventually yield exciting research. In the hopefully-likely event that you end up enjoying your project, come see me about taking it further (say, to publication).
## Project Dates
* Project presentations will be held during the last week of classes.
* The project paper is due on the Sunday of finals week.
* Peer reviews on project papers (for extra credit) are due on the Monday of finals week.
## Project Scale
I do not expect each project to lead to novel results, though I hope some projects could eventually lead to publication!
* I do expect a consistent effort on the project. Once we stop having weekly homework assignments, that amount of time should be entirely directed towards your project.
* Notably, "one long weekend" will _not_ suffice. I can tell. Trust me.
* You are welcome to tackle a more ambitious project. Such a project should have "stages" so that you have something to show at the end of the semester. I (or your advisor) can provide extra guidance on such projects.
* The number of group members should depend on the size of the project. Note that the grading for a two-person project will actually require "twice as much work" than a one-person project rather than the standard "1.5-times as much work". You should be able to split up the project paper (e.g., "I did section 1, Grace Hopper did section 2, and we shared section 3").
## Project Kinds
Projects on any subject related to the class are acceptable. The goal is to allow you to customize the project to your interests. There are two main types of projects: implementation projects, theory projects, and research projects.
In general, I recommend that you try to do a research project. They
are typically a bit harder because they typically involve both theory and implementation.
Undergraduate students may undertake implementation or theory projects but are free to pursue research projects. Graduate students must aim for a research project.
### Implementation Projects
Pick a fragment of a language or a relevant algorithm, and implement it! There is no firm limit on the amount of code.
An implementation project should feature "numbers": controlled, experimental results that help to sway your audience in favor of a point you are making. You should actually have a point: "I implemented a register allocator" is not quite good enough. You will want something more like: "Graph-coloring register allocation yields fewer spills and thus smaller and faster code than greedy register allocation. On the X benchmarks for the Y architecture, replacing a greedy register allocator in the Z compiler with a graph-coloring one resulting in a A% decrease in code size and a B% decrease in average executing time."
Your implementation must be relevant to language design or
analysis. It could also be relevant to language implementation,
provided that it has sufficient conceptual content and is close enough
to the course. Graph-coloring register allocation wouldn't actually
cut it.
### Theory Projects
Theoretical projects are similar in spirit to implementation projects, except that they deliver a system of formal definitions and proofs rather than a collection of source code. Rather than evaluate the system empirically, using "numbers", theory projects are evaluated based on what they prove.
### Research Projects
There are many kinds of research projects, including the following:
* Design and implement a program analysis
* Invent a language or a language feature for some particular purpose or with some particular characteristic (e.g., to make program analysis and understanding more tractable)
* Try to formalize some interesting aspect of some existing language
* Explore novel techniques for implementing a given language fragment
These projects are harder because they always involve some survey work and often involve some implementation. If you want to do a research project, and you are not yet sufficiently familiar with the area of the project, you should start with a brief survey and then turn it into a research project. While research is necessarily open-ended, be sure that you have a well-defined goal for the end of the semester so that you have something to write up and present.
## The Proposal
Your proposal should address at least the following questions:
1. Who are the members of your team?
2. What basic problem will your project try to solve?
3. Define the problem that you will solve as concretely as possible. Provide a scope of expected and potential results. Give a few example programs that exhibit the problem that you are trying to solve.
4. What is the general approach that you intend to use to solve the problem?
5. Why do you think that approach will solve the problem? What resources (papers, book chapters, etc.) do you plan to base your solution on? Is there one in particular that you plan to follow? What about your solution will be similar? What will be different?
6. How do you plan to demonstrate your idea?
7. How will you evaluate your idea? What will be the measurement for success?
Your proposal should be concise and specific. Do not be long-winded or vague. You will not be graded on the length of the proposal, but you will be graded on how many interesting things you say.
Your _pre-proposal_ should consist of answers to at least the first two questions. The purpose of the pre-proposal is to help you get started thinking about your project and discussing with me as needed.
## The Status Update
The status update is a short write-up. It should explain what you have done so far and how you plan to meet your goals in the final weeks of the project. Like your proposal, you will not be graded on the length of your status update but rather on how concrete you are on where you are.
## The Related Work Presentation
The goal of the related work presentation is to help you dive deep on the paper most closely related to your final project by driving a discussion about it with the class. To do so, you will present the work as if you were the author of the paper. Make sure to follow the format for research artifacts, covering (1) what is fundamental problem being addressed by the work, (2) why is the problem important or interesting, (3) why is the problem hard or hasn't been satisfactorily addressed to date, (4) what is the contribution of the work, and (5) why is the claimed contribution indeed a contribution.
In addition, you should connect the related work to your project (e.g., as a "Future Work" discussion in the presentation). The goal here is to help you refine the connection with your project in the form of a "mini-project proposal." It is a bit less involved than the Project Proposal, as you do not need to lay out the full landscape of related work.
You may consult slides or recordings from the authors' for the paper your presenting, but you must speak from your perspective (and thus need to make your own slides).
Logistically,
1. Share a link to the paper with the class in advance (by the end of the week before your presentation).
2. Sign up for a presentation slot.
3. Submit your slides before your presentation.
## The Presentation
The presentation should be short and should describe what the problem was, what the difficulties were, and what was accomplished or learned. You will find it much easier to prepare the talk using slides (perhaps 8 to 12 slides, depending on your speed).
While preparing the talk keep in mind who your audience is. You will be presenting to colleagues who are eager to find out (1) about new exciting facets of compilation and (2) how much fun you had. Plan to motivate the project (i.e., why is this important?) and to describe what you learned from it. Keep in mind that your colleagues have not read all the papers that you have read to do the project.
Project presentations will be held on the final week of classes. Students presenting on Tuesday will receive a small amount of extra credit to make up for presenting earlier.
## The Paper
Your write up at the end of the semester should be in the form of a short research paper. The project paper should have an abstract and an introduction describing the tackled problem, its motivation, and a very brief summary of the accomplishment. Then you should write a description of your notations (especially if they are different from what we used in class). Then you continue with the body of the material. The paper should end with a conclusion putting in perspective the accomplishment of the project and mentioning the open problems and with a bibliography of cited papers. Research papers should also have a related work section in which they compare the work with previous research results.
You might want to browse the papers from [PLDI](https://dblp.org/db/conf/pldi/index.html) or [POPL](https://dblp.org/db/conf/popl/index.html). Aside from giving you a number of data points for how the paper should look graphically, reading the electronic editions might help you to find a topic. Extending previously-published work is often not a bad start.
Your project paper should be ~10 pages, as necessary, while being as concise and concrete as possible. Like your proposal, you will not be graded on length but on how many interesting things you say. You will turn in a PDF _as well as your implementation code_. You will want to use the [LaTeX class file](https://www.sigplan.org/Resources/Author/) produced by ACM/SIGPLAN.
You might want to take a look at the [Paper Review Form](paper-review.txt) to get a sense of how papers are evaluated.
## Peer Review
You will have the opportunity to write reviews of your peers' project papers _for extra credit_ using the [Paper Review Form](paper-review.txt).