Existing programming teaching materials Section ‘Course

Download Report

Transcript Existing programming teaching materials Section ‘Course

4th Workshop “Software Engineering Education and
Reverse Engineering”
Zagreb, 5 – 12 September 2004
Existing programming teaching
materials
Section ‘Course: Object-Oriented Programming with Java’
(OOJava)
Živana Komlenov
Department of Mathematics and Informatics
Faculty of Science
University of Novi Sad
Goal
• Our ultimate goal: Creation of joint teaching material
for ‘Course: Object-Oriented Programming with Java’
(OOJava).
• As an important part of the whole project special
attention should be paid to high quality examples.
• Therefore, forming a pool of examples and student
assignments has been started.
• Work is in progress, so all contributions are still
welcome.
2
Živana Komlenov: Existing programming teaching materials
Existing programming
teaching materials
• Currently 6 Java courses are taught at some of our
member universities.
• Their examples have been gathered (texts of the
examples + source code with comments (any existing
versions)), analyzed and sorted in an appropriate way.
• The emphasis is not on examples that are directly used
during the lecture, but on every other kind of
supporting examples (student self-study, assignments,
lab exercises, longer examples for seminar/semester
papers, ... )
3
Živana Komlenov: Existing programming teaching materials
Division of examples
• Principal suggestion was to divide the examples
into at least three groups:
– Supporting Java examples - extra examples, similar to
those presented during the lecture, intended to
encourage students' individual experimenting.
– Short exercises - for instance, practical assignments,
lab exercises, etc.
– Longer examples - more complicated tasks, given as
seminar assignments, with longer deadlines (up to
several months).
4
Živana Komlenov: Existing programming teaching materials
Division comments
• However, there is no perfect way to draw the line
among these groups, so all suggestions or different
concepts of the division are very welcome.
• Additionally, we are going through some open - source
Internet materials, as well as good textbooks used
worldwide in similar courses.
• The idea is to collect useful pieces of information and
include them in our project.
5
Živana Komlenov: Existing programming teaching materials
Contributors
• Institute of Informatics, Humboldt University, Berlin
• Department of Mathematics and Informatics, Faculty of
Science, University of Novi Sad
• Department of Computer Science and Engineering,
Faculty of Electrical Engineering, University of Belgrade
• Chair of Computer Science, Mathematical Faculty,
University of Belgrade
• Computer Science and Engineering Department, Faculty
of Automation and Computer Science and Engineering,
"Politehnica" University of Timisoara
6
Živana Komlenov: Existing programming teaching materials
Institute of Informatics,
Humboldt University, Berlin
• Prof. Klaus Bothe
• Course: Practical Informatics I
– First semester course
– Last time taught in winter semester 2001/2002
– Computers, algorithms, data, programs, concepts of
programming languages, imperative and object-oriented
programming, programming techniques, bases of systematic
software development
– Followed by Java examples
7
Živana Komlenov: Existing programming teaching materials
Institute of Informatics,
Humboldt University, Berlin
• Contributions:
– Java examples used in the lecture, suitable for
Supporting Java examples group
– Assignments, some included in Short exercises
– Java examples used during the exercises, suitable
for section Short exercises
8
Živana Komlenov: Existing programming teaching materials
DMI, Faculty of Science,
Novi Sad
• Prof. Mirjana Ivanović
• Course: Programming Languages
– (semester 3, 2 hours/week lecture + 1 hours/week exercises
+ 1 hours/week lab
– semester 4, 2 hours/week lecture + 1 hours/week exercises +
2 hours/week lab)
– History of programming languages. Basic characteristics of
programming languages and most common differences.
– Object-oriented methodology: design and programming.
Principal elements: classes, inheritance, dynamic binding.
Review of some hybrid object-oriented languages.
9
Živana Komlenov: Existing programming teaching materials
DMI, Faculty of Science,
Novi Sad
– Java. Program structure. Data types, classes and objects.
Control and repetitive commands. Structured data types.
Methods, class libraries.
– Scheme; PROLOG
– Exam: practical + oral
• Contributions:
–
–
–
–
10
Examples from exercises
Lab assignments, some solutions
Written exams, some examples included in Short exercises
Seminar assignments, included in Longer examples
Živana Komlenov: Existing programming teaching materials
DMI, Faculty of Science,
Novi Sad
• Prof. Zoran Budimac
• Course: Operating Systems I
– (semester 5, 2 hours/week lecture + 2 hours/week exercises +
1 hours/week lab)
– History and development of operating systems. Programming
languages suitable for OS implementation. Concurrent
programming.
– Processes. Stages. Implementation. Interprocess
communication and synchronization. Process
communication. Deadlocks.
– Modula-2 and Java examples.
11
Živana Komlenov: Existing programming teaching materials
DMI, Faculty of Science,
Novi Sad
– Memory management. Physically available internal memory.
Virtual memory organization and management. External
memory. File systems.
– Exam: practical + oral
• Contributions:
– Java examples from exercises, suitable as one of the last
parts of Supporting Java examples – thread synchronization
– Practical assignments (some solved with GUI, as applets,
etc.), included in Short exercises
12
Živana Komlenov: Existing programming teaching materials
DCSE, Faculty of Electrical
Engineering, Belgrade
• Prof. Igor Tartalja
• Course: Programming Languages and Methods of
Programming
– (semester 5+6, 2 hours/week lecture + 2 hours/week
exercises)
– Fifth semester: Concepts of object-oriented software. C++
– Sixth semester: Java. Software portability. Bytecode and
JVM. Compilers. Classes and objects. Access control.
Constructors. Methods. Parameters. Method overlapping.
Garbage collection.
13
Živana Komlenov: Existing programming teaching materials
DCSE, Faculty of Electrical
Engineering, Belgrade
– Nested classes and packages. Access rights. Packages.
Interfaces. Inheritance.
– Exceptions. Error detection. Throw command. Exception
handling. Try-catch-finally construction.
– GUI. Package AWT. Event handling.
– No homework, practical assignments, etc.
• Contributions:
– Many interesting Supporting Java examples from 'Exercises
for Programming Languages and Methods of Programming
Course' (in Serbian), Copyright 2001 by Laslo Kraus
– Written exams, some examples included in Short exercises
14
Živana Komlenov: Existing programming teaching materials
Chair of Computer Science,
Mathematical Faculty, Belgrade
• Prof. Dušan Tošić
• Course: Programming Languages
– (semester 5+6, 2 hours/week lecture + 2 hours/exercises)
– PROLOG; LISP (Scheme)
– Java. Compared to Smalltalk. Basic language elements.
Creating applications and applets in Java.
– Written exams
• Contributions:
– Some seminar assignments – games. Ideal for Longer examples.
15
Živana Komlenov: Existing programming teaching materials
CSED, Faculty of Automatics
and Computers, Timisoara
• Prof. Ioan Jurca
• Course: Object-Oriented Programming
– (semester 4, 2 hours/week lecture + 2 hours/week lab)
– Fundamental concepts of object-oriented programming. Classes
and objects: class structure, fields, methods, object creation.
– Extending classes, type compatibility, abstract classes.
– Interfaces: declaration, extension, working with interfaces.
Nested classes and interfaces: static nested types, inner classes.
– Exceptions: creating exception types, throw and throws; try,
catch, finally.
16
Živana Komlenov: Existing programming teaching materials
CSED, Faculty of Automatics
and Computers, Timisoara
– Packages: package naming; relation with the directory structure;
short overview of standard Java packages.
– Concurrent programming (threads): creating threads; thread
synchronization.
– Graphical User Interfaces: the event model, the AWT package.
• Contributions:
– Version in Romanian of the material students should use to
prepare their lab assignments. There are 12 lessons, each
consisting an explanation of a set of concepts, intersperced with
Java programs (or program fragments) and ending with the text
of one or more assignments (translation in progress).
17
Živana Komlenov: Existing programming teaching materials
Collected examples
• Examples used at our member universities,
divided as suggested:
– Supporting Java examples
– Short exercises
– Longer examples
18
Živana Komlenov: Existing programming teaching materials
Supporting Java examples
• Nice combination of examples from Berlin, Novi Sad
and Belgrade (FEE).
• Mainly material used in classical exercises or lectures.
Partly suitable for lecture slides, but on the other hand
there are examples complex enough to be used as part
of any sort of exercises.
• All examples have been translated to English and sorted
by topics they cover.
19
Živana Komlenov: Existing programming teaching materials
Supporting Java examples
–
–
–
–
–
–
–
–
–
20
Intro
Keyboard
Math
Recursion
Array
• Search
• Sort
String
File
Object
Inheritance
–
–
–
–
–
–
–
–
–
–
Time
Interface
Collection
List
Stack
Queue
Error
Exception
Hash
Package
• Plane
–
–
–
–
–
–
• Figures
• LinAlgebra
Tree
Maze
Applet
GUI
Synchronization
• Primitives
• Graphics
• Examples
Supermarket
Živana Komlenov: Existing programming teaching materials
Short exercises
• Written exams
– Several solved examples from Novi Sad and Belgrade
(FEE), as well as texts of some more assignments (much
more of those are still in Serbian, stored as additional
material).
• Lab exercises
– Examples from Novi Sad, used in fall 2003/2004 when
Programming languages course was completely taught for
the first time since the new curriculum had been adopted.
Some student solutions are enclosed.
21
Živana Komlenov: Existing programming teaching materials
Short exercises
• Practical assignments
– Mainly examples concerning thread synchronization, again
from Novi Sad.
– Those assignments were given to students in fall 2003/2004
when Operating systems I course was completely taught for
the first time since the new curriculum had been adopted.
– They represent typical final assignments, with time limits of
approximately 3-4 weeks.
– There are some very good student solutions and just
formulations of other possible assignments.
22
Živana Komlenov: Existing programming teaching materials
Lab exercise example
DMI, Faculty of Science, University of Novi Sad, Serbia and Montenegro
Programming Languages, Prof. Mirjana Ivanović
Lab exercises: Nataša Ibrajter, 2003/2004
Student: Miroslav Nadj
Program Parents should read data from file 'Names.txt'. This file contains
names of children available for adoption. After reading all names, program
should create instances of Child objects, store them in an array and then allow
user to enter sex and age for each child.
Future parents should be able to set preferred characteristics and as a reply get
a list of children sorted by how well they match parents' criteria.
Class Child should contain following fields: name, sex, age.
Field priority while searching: name, sex, age.
Sex entering: m - male, f - female.
23
Živana Komlenov: Existing programming teaching materials
Lab exercise example
import java.io.*;
public void putPoints(int points) {
this.points = points;
}
public int getPoints() {
return points;
}
public String getSex() {
return sex;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
class Child {
private String name, sex;
private int age, points;
public Child(String name) {
this.name = name;
sex = "f";
age = 0;
points = 0;
}
public void putAge(int age) {
this.age = age;
}
public void putSex(String sex) {
this.sex = sex;
}
24
}
Živana Komlenov: Existing programming teaching materials
Lab exercise example
public class Parents {
public static void printData(Child[] array) {
for (int i = 0; i < array.length; i++) {
System.out.println(" " + (i+1) + ". " + array[i].getName() + " " +
array[i].getSex() + " " + array[i].getAge() + " " +
array[i].getPoints());
}
System.out.println();
}
public static void scoreChildren(Child[] array, String nameWish,
String sexWish, int ageWish) {
int points = 0, difference = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i].getName()).compareTo(nameWish) != 0) {
points += Math.abs(array[i].getName().length() - nameWish.length())*4;
}
25
Živana Komlenov: Existing programming teaching materials
Lab exercise example
if ((array[i].getSex()).compareTo(sexWish) != 0) {
points += 200;
}
if (array[i].getAge() != ageWish) {
difference = Math.abs(ageWish - array[i].getAge());
points += difference*2;
}
array[i].putPoints(points);
points = 0;
}
}
public static Child[] sortChildren(Child[] array) {
Child[] tempArray = array;
for (int i = 0; i < array.length-1; i++) {
for (int j = i+1; j < array.length; j++) {
if (tempArray[i].getPoints() > tempArray[j].getPoints()) {
26
Živana Komlenov: Existing programming teaching materials
Lab exercise example
Child temp = tempArray[i];
tempArray[i] = tempArray[j];
tempArray[j] = temp;
}
else if (((tempArray[i].getName()).compareTo(tempArray[j].getName()) > 0)
&& (tempArray[i].getPoints() == tempArray[j].getPoints() )) {
Child temp = tempArray[i];
tempArray[i] = tempArray[j];
tempArray[j] = temp;
}
}
}
return tempArray;
}
public static void main(String[] args) throws IOException {
BufferedReader file = new BufferedReader(new InputStreamReader(
new FileInputStream("Names.txt")));
27
Živana Komlenov: Existing programming teaching materials
Lab exercise example
String[] names = new String[10];
String name = file.readLine();
int n = 0;
while (name != null) {
names[n] = name;
name = file.readLine();
n++;
}
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in));
Child[] children = new Child[n];
System.out.println();
System.out.println(" --- Enter sex and age ---");
System.out.println();
for (int i = 0; i < n; i++) {
children[i] = new Child(names[i]);
System.out.println("Name: " + children[i].getName());
System.out.print("Sex (m - male; f - female): ");
28
Živana Komlenov: Existing programming teaching materials
Lab exercise example
children[i].putSex(input.readLine());
System.out.print("Age: ");
children[i].putAge(Integer.parseInt(input.readLine()));
System.out.println();
}
System.out.println(" --- Enter search criteria --- ");
System.out.print("Name: ");
String nameWish = input.readLine();
System.out.print("Sex: ");
String sexWish = input.readLine();
System.out.print("Age: ");
int ageWish = Integer.parseInt(input.readLine());
scoreChildren(children, nameWish, sexWish, ageWish);
Child[] tempArray = sortChildren(children);
System.out.println(" --- Children matching the criteria --- ");
printData(tempArray);
}
}
29
Živana Komlenov: Existing programming teaching materials
Longer examples
• Examples from Novi Sad
– Practical assignments for students passing from old
curriculum to the new one, that had not taken Programming
languages written exam before that, so now they are required
to do some practical work instead.
– Enclosed are several student solutions and just formulations
of other possible assignments.
• Examples from Belgrade (Mathematical Faculty)
– Seminar assignments - different kinds of games, with student
solutions (some of them quite good).
30
Živana Komlenov: Existing programming teaching materials
Additional materials
• Sources:
– Examples from other courses at member
universities that include more complex Java
assignments (currently in Serbian)
– Examples from representative Java textbooks
31
Živana Komlenov: Existing programming teaching materials
DCSE, Faculty of Electrical
Engineering, Belgrade
• Prof. Igor Tartalja
• Course: Object-Oriented Software
– (semester 9, 2 hours/week lecture + 2 hours/week exercises)
– Combining UML modelling and Java implementations
• Contributions (in Serbian):
– Examples from 'Exercises for Object-Oriented Software
Course' (in Serbian), Copyright 2002 by Laslo Kraus
– Relatively complex practical assignments
– Written exams
32
Živana Komlenov: Existing programming teaching materials
DMI, Faculty of Science,
Novi Sad
• Prof. Miloš Racković
• Course: Artificial Intelligence I
– (semester 5, 2 hours/week lecture + 2 hours/week exercises +
1 hours/week lab)
– Basics of artificial intelligence. Knowledge representation.
Searching as a problem solving method. Strategies. Heuristic
procedures. Expert systems.
– Exam: practical + oral
• Contributions (in Serbian):
– Relatively complex practical assignments
33
Živana Komlenov: Existing programming teaching materials
Java textbooks
• Potentially useful Java textbooks, chosen on account of the
variety of neat examples included. Full source code of those has
been collected as additional material.
– ‘Java Software Solutions’, 4th Edition
– ‘Thinking in Java’, 3rd Edition
– ‘Java Gently’, 3rd Edition
– ‘Teach Yourself Java 2 in 21 Days’, 4th Edition
– ‘Effective Java’
– ‘Java Cookbook’
– ‘Java Examples in a Nutshell’, 3rd Edition
34
Živana Komlenov: Existing programming teaching materials
Java Software Solutions
• ‘Java Software Solutions’, 4th
Edition
– John Lewis and William Loftus
– William Loftus is a serial
entrepreneur and author.
– John Lewis is an Associate
Professor of Department of
Computing Sciences, Villanova
University, PA, USA
– Teaching - Fall 2004: CSC 1051 Data Structures and Algorithms I
35
Živana Komlenov: Existing programming teaching materials
Thinking in Java
• ‘Thinking in Java’, 3rd Edition
– Free electronic book
– Published by Prentice-Hall,
December 2002
– Bruce Eckel – his company
provides public and private
training and consulting services.
– He has published over 150 articles
and several books.
– Parts of this book are already used
for exercises in Novi Sad.
36
Živana Komlenov: Existing programming teaching materials
Java Gently
• ‘Java Gently’, 3rd Edition
– Addison-Wesley, 2001.
– Judith Bishop, University of
Pretoria, South Africa
– Based on courses given in Java since
1996, and on courses in other
languages presented to first year
science and engineering students
since 1980.
– Over 80 fully worked examples,
together with test data and output.
37
Živana Komlenov: Existing programming teaching materials
Teach Yourself Java 2
in 21 Days
• ‘Teach Yourself Java 2 in 21
Days’, 4th Edition
– Laura Lemay and Rogers
Cadenhead
– Sams, 2004.
– Clear and personable writing
– Extensive use of examples
– Logical and complete
organization
– Covers the latest developments
in Java
38
Živana Komlenov: Existing programming teaching materials
Effective Java
• ‘Effective Java’ Programming
Language Guide
– Joshua Bloch, Senior Staff Engineer
at Sun Microsystems, Inc., in the
Core Java Platform Group.
– Designed and implemented the
award-winning Java Collections
Framework, the java.math package.
– Here he shares 57 "nuggets“ - rules
and code examples showing what
works, what doesn't, and how to use
the language libraries to best effect.
39
Živana Komlenov: Existing programming teaching materials
Java Cookbook
• ‘Java Cookbook’
–
–
–
–
40
Solutions and Examples for Java
Developers
Ian F. Darwin
O'Reilly, 2001
Comprehensive collection of
problems, solutions, and practical
examples.
Short, focused pieces of code that are
easy to incorporate into other
programs. Focus on things that are
useful, tricky, or both.
Živana Komlenov: Existing programming teaching materials
Java Examples in a Nutshell
• ‘Java Examples in a Nutshell’, 3rd
Edition
– David Flanagan
– O'Reilly, 2004
– Entire book of real-world Java
programming examples to learn from.
– Covers Java 1.4 and contains 193
complete, practical examples: over
21,900 lines of densely commented,
professionally written Java code,
covering 20 distinct client-side and
server-side APIs.
41
Živana Komlenov: Existing programming teaching materials
Conclusions
• Comparison of example difficulty
– Different approach for first and second (or third) year
courses dictates differences in example choice and dfficulty.
– We should try to make the best of both views and allow
lecturers to use those parts of joint course material they find
suitable for their students.
• Teaching programming vs teaching Java
– For a first-year course, it is no longer sufficient to just teach
a language.
– In addition to explaining syntax and the construction of a
well-formed program, a modern Java course has to include
techniques for problem solving.
42
Živana Komlenov: Existing programming teaching materials
Statistics - current state of
gathered material
• Supporting Java examples
– All collected examples translated and sorted.
• Short exercises
– Written exams - Just several solved examples translated and included (all
available solutions). Texts of a lot of other assignments are mainly still in
Serbian.
– Lab exercises - Texts of all examples included. Only a few student solutions
enclosed (all of those found).
– Practical assignments – Again just several full examples collected.
Formulations of other possible assignments are partly still in Serbian.
• Longer examples
– All collected examples translated and sorted.
– 30% just as formulations of possible assignments.
43
Živana Komlenov: Existing programming teaching materials
Future work
• Work done so far is just a basis for a complete pool of
assignments. It gives us a good starting point, still leaving space
for much more effort and coordinated example collecting and
sorting.
• Only when collected examples start being combined and used,
we shall be able to define the most appropriate division strategy
and ideas for future work.
• Tasks:
– Including all sorts of additional examples.
– Precise programs of lab exercises and practical assignments
for other types of exercises, seminars, etc.
– English versions of all available assignments.
– Local versions later.
44
Živana Komlenov: Existing programming teaching materials