Skip to content

Commit d208814

Browse files
All new changes
1 parent 031a686 commit d208814

19 files changed

+391
-66
lines changed

assignments/assignment1.org

+65-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ defined more than once.].
160160
* defines. Doxygens tags are words preceeded by either a backslash @\
161161
* or by an at symbol @@.
162162
*
163-
* @see http://wrigstad.com/ioopm19/assignments/assignment1.html
163+
* @see http://wrigstad.com/ioopm/assignments/assignment1.html
164164
*/
165165

166166
/// @brief Create a new hash table
@@ -4147,3 +4147,67 @@ presentations, or add your name to the help list.
41474147
# Explain the key hotkeys
41484148
# TODO: add fixmee to course emacs package
41494149
# first insert listing could use an animation that shows how the interation works
4150+
4151+
* Addendum 2020-10-05: Documentation of Assignments
4152+
4153+
When we talk about documentation in the assignments, we are referring
4154+
to three different kinds of documentation:
4155+
4156+
1. Documentation in the header files -- as exemplified in the assignment text.
4157+
2. Documentation in the .c files as code comments
4158+
3. External documentation in the README.md file
4159+
4160+
4161+
** Documentation in the header files
4162+
4163+
Sometimes you make changes to how a function works, or you make
4164+
assumptions that need to be communicated to the user. These things
4165+
should be reflected in the documentation in the header files. For
4166+
example, if you do not allow NULL as a value in your hash table,
4167+
then this needs to be documented in the header file in the insert
4168+
function for example. The target audience for these comments are
4169+
the users of your functions, plus future maintainers of you code
4170+
that need to understand what the functions are supposed to do.
4171+
4172+
Design decision necessary to understand how to use the stuff
4173+
you've built should go here -- like how error handling is done,
4174+
etc. and whether the hashtable owns its data or not.
4175+
4176+
4177+
** Documentation in the ~.c~ files as code comments
4178+
4179+
Sometimes you need to comment on things, for example you put
4180+
=TODO=:s, =FIXME=:s or other explanations about why a particular
4181+
design choice etc. These things are also part of the
4182+
documentation, but the target audience is a future you, or someone
4183+
else who might be tasked with maintaining or extending this code
4184+
in the future.
4185+
4186+
(Note that in Java, there are no separate header files meaning the
4187+
header file documentation will be interleaved with the
4188+
implementation code, or if you use an Java =Interface= to factor
4189+
this out.)
4190+
4191+
4192+
** Documentation in the =README.md= file
4193+
4194+
The =README.md= should in the very least contain information about
4195+
how to compile the code, run the tests, and run the program(s).
4196+
Sometimes some major thing has changed because some design
4197+
decision you took, and this needs to be reflected here. If you
4198+
make a deal with a teacher about some shortcut, it too goes here.
4199+
4200+
The target audience for this information is the teachers of this
4201+
course.
4202+
4203+
Also quickly outline design decisions you took. This can be a very
4204+
brief bullet list as long as it is clear, e.g.:
4205+
4206+
- Errors are handled by ...
4207+
- The hash table does not take ownership of the data of its keys and values
4208+
- ...
4209+
4210+
This bullet list overlaps a little with the information in the
4211+
header files, but this version is more terse, and the target
4212+
audience is another.
4213+

assignments/assignment2.org

+27-4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,29 @@
77
*Hard deadline*: End of Week 44
88
#+end_important
99

10+
#+begin_note
11+
This assignments builds on the previous one.
12+
When you form a new pair, one of you will bring
13+
their old assignment 1 code with them to the new pair.
14+
15+
There are several reasons for this all rooted in how
16+
useful and insightful it is to live with code you've
17+
written yourself for a "long while", and respectively,
18+
how insightful it is to see someone else's implementation
19+
of the same specification.
20+
21+
It usually forces you to reflect on readability, what is good
22+
naming, what is "obvious" or intuitive, etc. Plus you'll get to
23+
experience that you get better, when you look at code you wrote
24+
"ages ago" and immediately can see improvements or better ways to
25+
do it.
26+
27+
Thus, one of you will be the expert on the implementation of the
28+
library that you can use to do most of the heavy lifting in this
29+
assignment. The other will ask questions and poke at differences
30+
with the hashtable code he or she knows from before.
31+
#+end_note
32+
1033
* Simple Webstore Backend
1134
In Assignment 2, we are going to put the data structures we
1235
implemented in Assignment 1 to use as we build a small program
@@ -357,10 +380,10 @@ This assignment reuses components from earlier in the course:
357380

358381
You are doing Assigment 2 in a team of two people. As a starting
359382
point of this work, you need to pick components 1--3 above from 3
360-
*discrete* sources from within the same group. For example, let
361-
Alice, Bob and Cecil be members of the same group, and Alice and
362-
Bob work together on Assignment 2. In the start of their work,
363-
Alice and Bob compile the following:
383+
*discrete* sources from within the same group. For example, let's
384+
say Alice and Bob works together on Assignment 2. On assignment 1,
385+
Bob worked with Cecil. In the start of their work, Alice and Bob
386+
compile the following:
364387

365388
1. Hash table comes from Alice's Assignment 1
366389
2. Linked list comes from Cecil's Assignment 1

cloud9.org

+46-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ last name was Batman before changing to Chalpin, try =saba1234=
1515
instead.
1616
#+end_important
1717

18+
1819
* Setup: using ssh (only once)
1920

2021
Ssh -- Secure SHell -- is a wonderful program that allows you to
@@ -132,9 +133,6 @@ guess. You need to confer with each other.
132133
[[./images/cloud9-invite4.png]]
133134

134135

135-
136-
137-
#+include: "./footer.org"
138136
* Changing your backend server
139137

140138
If you for some reason have trouble logging in to your chosen
@@ -160,6 +158,51 @@ If instructed to change servers, we will give you new suitable
160158
host names.
161159

162160

161+
* Installing Necessary Tools in your New Cloud9
162+
163+
#+begin_important
164+
Starting 2020-09-16, we provide a second Cloud9 instance which is
165+
backed on separate servers. With this setup, every student has a
166+
dedicated computational resource which should be less sensitive to
167+
the actions of others. Hopefully this solves the problems that
168+
some of you have been experiencing.
169+
#+end_important
170+
171+
In the AWS management console where you normally go to start your
172+
Cloud9 IDE, there will be a second Cloud9 instance whose name ends
173+
in *-aws*.
174+
175+
*The first time* you start this *-aws* server up, you will need to
176+
go to the terminal in Cloud9 and run the following *two* commands to
177+
install the course's tools:
178+
179+
** Command 1: Make space
180+
To make space, you should run the following command to uninstall unnecesary programs:
181+
#+begin_src bash
182+
sudo yum remove -y docker mysql55 perl mercurial-python27 ruby20-libs perl-Encode php56 php56-common aws-apitools-elb golang subversion php-pear
183+
#+end_src
184+
185+
** Command 2: Install tools
186+
To install the tools needed for the course, run the following command:
187+
#+begin_src bash
188+
sudo yum install -y zsh htop valgrind clang6.0-tools-extra.x86_64 lldb.x86_64 doxygen-latex.x86_64 CUnit.x86_64 CUnit-devel.x86_64 http://downloads.sourceforge.net/ltp/lcov-1.14-1.noarch.rpm
189+
#+end_src
190+
191+
We will update this page with instructions for installing Java
192+
1.8. Right now, Java 1.7 is installed which is even older than
193+
Java 1.8. If you have problems with Java 1.7 (there is no reason
194+
to expect you would), before these instructions are issued, please
195+
use the first Cloud9 IDE running on the IT department ThinLinc
196+
servers (e.g. =atterbom.it.uu.se= etc.) for the time being.
197+
198+
*Note that you will need to re-invite people to your new instance.*
199+
200+
#+begin_important
201+
*Under no circumstances* may you change settings for your instance,
202+
such as changing how many minutes before the instance is suspended
203+
until next activity. Failure to comply with these rules will lead to
204+
permanent suspension of your Cloud9 account.
205+
#+end_important
163206

164207
#+include: "./footer.org"
165208

code-exam.org

+23-14
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,22 @@ on-campus, just like described below.*
2525

2626
* What is a Coding Exam?
2727

28+
#+begin_important
29+
The code exam in 2020 will be held physically on campus, according to schedule.
30+
If the pressure on spaces for the coding exam is too high, then we will switch
31+
to a new schedule with 3 slots in the day instead of the normal 2.
32+
#+end_important
33+
2834
A coding exam is an individual exam that runs in the normal
2935
computer halls. You have to pass *two* coding exams on this
3036
course, one imperative and one object-oriented in the programming
3137
languages that the course uses.
3238

33-
#+begin_note
34-
It is not yet clear in 2020 how the code exams will run. This will
35-
ultimately depend on the number of students on the course, the
36-
available computer halls, etc. We will now in September 2020.
37-
#+end_note
39+
# #+begin_note
40+
# It is not yet clear in 2020 how the code exams will run. This will
41+
# ultimately depend on the number of students on the course, the
42+
# available computer halls, etc. We will now in September 2020.
43+
# #+end_note
3844

3945
Coding exams are given multiple times during the course (e.g., 4
4046
times in 2018) and each exam has two programming tasks -- one
@@ -90,22 +96,25 @@ kodprovet har hårda tidsgränser.
9096
Below are some recent coding exams.
9197

9298
| Date | Files | Instructions and/or Postmortem | Note |
93-
| 2017-10-26 | [[http://wrigstad.com/ioopm/agoster.zip][available]] | [[http://wrigstad.com/ioopm/2017/kodprov-okt-17.html][available]] | |
94-
| 2017-12-08 | [[http://wrigstad.com/ioopm/entrekod.zip][available]] | [[http://wrigstad.com/ioopm/2017/kodprov-dec-08.html][available]] | Only C |
95-
| 2017-12-18 | [[http://wrigstad.com/ioopm/sorsele-fm.zip][available]] | [[http://wrigstad.com/ioopm/2017/kodprov-dec-18.html][available]] | |
99+
| 2017-10-26 | [[http://wrigstad.com/ioopm/agoster.zip][available]] | [[http://wrigstad.com/ioopm17/2017/kodprov-okt-17.html][available]] | |
100+
| 2017-12-08 | [[http://wrigstad.com/ioopm/entrekod.zip][available]] | [[http://wrigstad.com/ioopm17/2017/kodprov-dec-08.html][available]] | Only C |
101+
| 2017-12-18 | [[http://wrigstad.com/ioopm/sorsele-fm.zip][available]] | [[http://wrigstad.com/ioopm17/2017/kodprov-dec-18.html][available]] | |
96102
| 2018-04-02 | [[http://wrigstad.com/ioopm/bridget.zip][available]] | | |
97103
| 2018-08-30 | [[http://wrigstad.com/ioopm/mandel.zip][available]] | [[./exams/2018-08-30.org][available]] | |
98104
| 2018-10-24 | [[http://wrigstad.com/ioopm/byzantin.zip][available]] | [[./exams/2018-10-24.org][available]] | |
99105
| 2018-12-11 | [[http://wrigstad.com/ioopm/equinox.zip][available]] | [[./exams/2018-12-11.org][available]] | |
100106
| 2018-12-19 | [[http://wrigstad.com/ioopm/patata.zip][available]] | [[./exams/2018-12-19.org][available]] | |
101107
| 2019-01-14 | [[http://wrigstad.com/ioopm/bergamott.zip][available]] | [[./exams/2019-01-14.org][available]] | |
102108

103-
In 2016, I was asked on Piazza to record a screencast that
104-
demonstrated what doing a code exam could be like. This was a
105-
great idea, but the question was asked the night before the
106-
exam, and hence [[http://user.it.uu.se/~writo649/java.mp4][this recording]] is a little rough (to the point
107-
of being a bit wrong in the end, but it serves the purpose to
108-
show what writing a code exam can be like).
109+
** Screencast Example of Solving a Coding Exam
110+
Here is a screencast recording from 2020-10-12 that solves the
111+
exam from 2019-01-14. *Because I could not get Studium to scale my recording to anything legible, you most likely want to look at the 1:1 resolution [[http://user.it.uu.se/~writo649/kodprov-190114.mp4][here]].*
112+
113+
#+begin_center
114+
#+BEGIN_EXPORT html
115+
<iframe width="560px" height="320px" allowfullscreen="true" src="https://uppsala.instructuremedia.com/embed/a447b015-895a-4363-9bd0-c8bd94e77164" frameborder="0"></iframe>
116+
#+END_EXPORT
117+
#+end_center
109118

110119
* Frequently Asked Questions
111120

exams/2019-01-14.org

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
1. =cd= (detta tar dig till din hemkatalog)
99
2. =mkdir kodprov190114=
1010
3. =cd kodprov190114=
11-
4. =curl http://wrigstad.com/ioopm/bergamott.zip=
11+
4. =curl --output k.zip http://wrigstad.com/ioopm/bergamott.zip=
1212
5. =unzip k.zip=
1313

1414
Nu har du fått ett antal filer och kataloger:

index.org

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
#+title: Imperative & Object-Oriented Programming Methodology
32
#+include: "./setup.org"
43

@@ -103,14 +102,14 @@ given live and recorded for posterity. Recorded lectures appear [[./lectures.org
103102
| 1/9 | Grundläggande datatyper, deklaration, uttryck och satser. Funktioner. Enkel I/O. Enkel stränghantering. | [[aua:1][A1]] ([[aua:13][F13]], [[aua:15][G15]]) | [[file:misc/lecture1.pdf][2020 slides]] |
104103
| 4/9 | Poster och unioner. Typnamnsdefinitioner. Funktionspekare. Separatkompilering och headerfiler. | [[aua:3][A3]], [[aua:9][D9]], [[aua:15][G15]], [[aua:16][G16]], ([[aua:22][I22]]), [[aua:30][K30]]. | [[file:misc/lecture2.pdf][2020 slides]] |
105104
| 7/9 | Dynamisk minnesallokering. Pekare. | [[aua:10][E10]], [[aua:20][H20]], [[aua:26][J26]], [[aua:27][J27]], [[aua:38][M38]] | [[file:misc/lecture3.pdf][2020 slides]] |
106-
| 10/9 | Introduktion till resten av kursen. Skillnad mellan funktionell och imperativ programmering. SIMPLE. Det agila upplägget. | [[aua:7][C7]] | [[file:misc/w1-2.pdf][Old slides]] |
107-
| 14/9 | Stack och heap, länkade strukturer, pekare 1/2. | [[aua:10][E10]], [[aua:20][H20]], [[aua:26][J26]], [[aua:36][M36]] | [[file:misc/w3.pdf][Old slides]] |
108-
| 17/9 | Stack och heap, länkade strukturer, pekare 2/2. | [[aua:27][J27]], [[aua:37][M37]], [[aua:39][M39]] | -''- |
109-
| 21/9 | Introduction to testing with CUnit | [[aua:18][G18]], [[aua:49][Q49]], [[aua:50][Q50]] | [[file:misc/w4.pdf][Old slides]] |
110-
| 24/9 | Automatisering (Make, scripting) och optimering. | [[aua:55][T55]], [[aua:57][U57]], [[aua:58][V58]], [[aua:45][P45]] | -''- |
111-
| 28/9 | Design & metodologi. Hur strukturerar man? Top-down, bottom-up. Lagertänkande. | [[aua:41][N41]] | [[file:misc/w5.pdf][Old slides]] |
112-
| 1/10 | Modularisering, separatkompilering, coupling & cohesion. | TBA | -''- |
113-
| 5/10 | Defensiv programmering. Läsbar kod. | [[aua:22][I22]], [[aua:45][P45]] | [[file:misc/w6.pdf][Old slides]] |
105+
| 10/9 | Introduktion till resten av kursen. Skillnad mellan funktionell och imperativ programmering. SIMPLE. Det agila upplägget. | [[aua:7][C7]] | [[file:misc/lecture4.pdf][2020 slides]] |
106+
| 14/9 | Stack och heap, länkade strukturer, pekare 1/2. | [[aua:10][E10]], [[aua:20][H20]], [[aua:26][J26]], [[aua:36][M36]] | [[file:misc/lecture5.pdf][2020 slides]] |
107+
| 17/9 | Stack och heap, länkade strukturer, pekare 2/2. | [[aua:27][J27]], [[aua:37][M37]], [[aua:39][M39]] | [[file:misc/lecture6.pdf][2020 slides]] |
108+
| 21/9 | Introduction to testing with CUnit | [[aua:18][G18]], [[aua:49][Q49]], [[aua:50][Q50]] | [[file:misc/lecture7.pdf][2020 slides]] |
109+
| 24/9 | Design & metodologi. Hur strukturerar man? Top-down, bottom-up. Lagertänkande. | [[aua:41][N41]] | [[file:misc/lecture8.pdf][2020 slides]] |
110+
| 28/9 | Automatisering (Make, scripting) och optimering. | [[aua:55][T55]], [[aua:57][U57]], [[aua:58][V58]], [[aua:45][P45]] | [[file:misc/lecture9.pdf][2020 slides]] |
111+
| 1/10 | Modularisering, separatkompilering, coupling & cohesion. | TBA | [[file:misc/lecture10.pdf][2020 slides]] |
112+
| 5/10 | Defensiv programmering. Läsbar kod. | [[aua:22][I22]], [[aua:45][P45]] | [[file:misc/lecture11.pdf][2020 slides]] |
114113
| 8/10 | Preprocessorn. Bitmanipulering. | [[aua:42][O42]], [[aua:43][O43]], [[aua:44][O44]] | -''- |
115114
| 12/10 | /Backup/ (Terminalen) | [[aua:58][V58]] | Demo |
116115
| 15/10 | Prepping for code exam | | N/A |

0 commit comments

Comments
 (0)