Courses Morten is teaching - Morten Goodwin - T-FLIP

T-FLIP Kickoff
Courses I am involved in
Førsteamanuensis, Morten Goodwin, Ph.D.
2015-09-02
Basic Programming
• DAT101: Basic Programming.
• 150-200 students.
• Java
• 24 weeks.
• 4-5 mandatory assignments weekly
• 2-3 voluntary assignments weekly
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
2/ 22
Basic Programming
• All mandatory assignments fully tests.
• Types of tests:
• Unit tests
• Mockup
• Reflection
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
3/ 22
Standard unit tests
1
2
3
4
5
6
7
@Test(timeout=10000)
public void testOppgave3() {
Oblig3Funksjoner k = new Oblig3Funksjoner();
int euro = (int)k.kronerTilEuro(20);
if(euro!=2){
fail(”Forsøkte å konvertere 20 kroner. Forventet 2 Euro ←men fikk isteden:”+euro);
}
8
9
10
11
12
13
euro = (int)k.kronerTilEuro(0);
if(euro!=0){
fail(”Forsøkte å konvertere 0 kroner. Forventet 0 Euro ←men fikk isteden:”+euro);
}
}
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
4/ 22
Mockup
1
2
3
4
5
6
7
8
9
10
11
12
13
public class TestFrame extends JFrame{
public ArrayList<Component> komponenter = new ArrayList<←Component>();
public Component add(Component c){...}}
public void testOppgave8(){
int numJButtons = 0;
for (Component c : t.komponenter) {
try {
JButton b = (JButton)c;
numJButtons += 1;
} catch (ClassCastException e) {}
}
if(numJButtons!=24){
fail(”Det er ”+numJButtons+” luker lagt til. Oppgaven krever 24 ←knapper.”); }}
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
5/ 22
Reflection
1
2
3
4
5
6
7
8
public void testOppgave2(){
Oblig10Brus o = new Oblig10Brus();
Class tClass = o.getClass();
boolean hasPoengsum = false;
if(!Tools.containsVariable(”double”, ”poengsum”, tClass){
fail(”Fant ikke variabelen poengsum av typen double”);
}
}
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
6/ 22
Assignment
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
7/ 22
Do assignment
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
8/ 22
Wait a long time for the teacher
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
9/ 22
Fix problems noted by the teacher
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
10/ 22
Wait a long time for the teacher
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
11/ 22
Wait a long time for the teacher — again
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
11/ 22
Teacher will manually verify the assignment
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
12/ 22
New way
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
13/ 22
Do assignment
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
14/ 22
Push code
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
15/ 22
Oversikt
1
2
3
4
5
6
7
8
9
10
Detaljer
Oppgave 10
Deloppgave 1: Godkjent
Deloppgave 2: Ikke godkjent
Oblig10Brus har hverken variabelen poengsum av
typen double, eller metoden getPoengsum som
returnerer double
Deloppgave 3: Ikke godkjent
Ble ikke spurt om brusmerke da jeg la til brus
Antall deloppgaver godkjent: 1 av 3 (33%)
Total evaluering Oppgave 10: Ikke godkjent
Fix problems noted by the system
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
17/ 22
Student iteration
Program the
assignemnts
Commit and
push on git
Build in
Bamboo
View
results
Pass
Pass
Fail
If one or
more
tests fails
If every test passes
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
18/ 22
Everyone is Happy
Happy Student
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
19/ 22
Everyone is Happy
Happy Student
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
Happy Teacher
New way
19/ 22
DAT101 Usage
14 %
45%
12 %
40%
35%
10 %
30%
8%
25%
6%
20%
15%
4%
10%
2%
5%
Deadline
00-01
01-02
02-03
03-04
04-05
05-06
06-07
07-08
08-09
09-10
10-11
11-12
12-13
13-14
14-15
15-16
16-17
17-18
18-19
19-29
20-21
21-22
22-23
23-00
0%
New Assignment
Given
Usage over week
New Assignment
Given
Deadline
0%
Wed
Thu
Fri
Sat
Sun
Mon
Tue
Usage over day
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
20/ 22
Fall
Uke
1
2
3
4
5
6
7
8
9
10
11
12
Tema
Introduksjon
Programkontroll
Funksjoner og metoder
Løkker
Metoder og objekter
GUI
Arrays
Objektorientering
Objektorientering (2)
GUI (2)
Unntak og debugging
Repetisjon
Oppgaver
Enkelt program
Biblioteksprogram
Valutakalkulator
Gjett-et-tall spill
Super Mario
Julekalender
GPS-program
Stein-saks-papir spill
Snake
Brus-testings program
Eksamensoppgaver
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
21/ 22
Spring
Uke
1
2
3
4
5
6
7
8
9
10
11
12
Tema
Oppgave
Android-utvikling
Quiz-app
Android-utvikling
BreakOut-app
String
Oversetter
UML
Skiløp-program
Filer
Varebeholdning
GUI (3)
Sudoku
Generic Collections
Lotto-program
Eksterne bibliotek (Twitter) Program for fjernstudenter
Enhetstesting og Tråder
Enhetstestet valutakalkulatro
Design patterns
Word
Eksamenstrening
Eksamensoppgaver
Eksamenstrening (2)
Eksamensoppgaver
Eksamen
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
22/ 22
DAT233: Programming Concepts
• 15 students.
• Scala, Prolog
• 12.
• 3 large mandatory assignments.
• Manually tested for correctness, speed and functionality
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
23/ 22
DAT234: Scripting and Hacking
• Not involved with any longer
• 25 students.
• Bash, Powershell, and Python
• 10 assignments.
• Manually tested for correctness.
• All handins through git
T-FLIP Kickoff - Courses I am involved in - Morten Goodwin
New way
24/ 22