Presentation is loading. Please wait.

Presentation is loading. Please wait.

Existing programming teaching materials Section ‘Course: Object-Oriented Programming with Java’ (OOJava) Živana Komlenov Department of Mathematics and.

Similar presentations


Presentation on theme: "Existing programming teaching materials Section ‘Course: Object-Oriented Programming with Java’ (OOJava) Živana Komlenov Department of Mathematics and."— Presentation transcript:

1 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 4 th Workshop “Software Engineering Education and Reverse Engineering” Zagreb, 5 – 12 September 2004

2 Živana Komlenov: Existing programming teaching materials 2 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.

3 Živana Komlenov: Existing programming teaching materials 3 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,... )

4 Živana Komlenov: Existing programming teaching materials 4 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).

5 Živana Komlenov: Existing programming teaching materials 5 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.

6 Živana Komlenov: Existing programming teaching materials 6 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

7 Živana Komlenov: Existing programming teaching materials 7 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

8 Živana Komlenov: Existing programming teaching materials 8 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

9 Živana Komlenov: Existing programming teaching materials 9 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.

10 Živana Komlenov: Existing programming teaching materials 10 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: –Examples from exercises –Lab assignments, some solutions –Written exams, some examples included in Short exercises –Seminar assignments, included in Longer examples

11 Živana Komlenov: Existing programming teaching materials 11 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.

12 Živana Komlenov: Existing programming teaching materials 12 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

13 Živana Komlenov: Existing programming teaching materials 13 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.

14 Živana Komlenov: Existing programming teaching materials 14 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

15 Živana Komlenov: Existing programming teaching materials 15 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.

16 Živana Komlenov: Existing programming teaching materials 16 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.

17 Živana Komlenov: Existing programming teaching materials 17 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).

18 Živana Komlenov: Existing programming teaching materials 18 Collected examples Examples used at our member universities, divided as suggested: –Supporting Java examples –Short exercises –Longer examples

19 Živana Komlenov: Existing programming teaching materials 19 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.

20 Živana Komlenov: Existing programming teaching materials 20 Supporting Java examples –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

21 Živana Komlenov: Existing programming teaching materials 21 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.

22 Živana Komlenov: Existing programming teaching materials 22 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.

23 Živana Komlenov: Existing programming teaching materials 23 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.

24 Živana Komlenov: Existing programming teaching materials 24 Lab exercise example import java.io.*; 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; } 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; }

25 Živana Komlenov: Existing programming teaching materials 25 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; }

26 Živana Komlenov: Existing programming teaching materials 26 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()) {

27 Živana Komlenov: Existing programming teaching materials 27 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")));

28 Živana Komlenov: Existing programming teaching materials 28 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): ");

29 Živana Komlenov: Existing programming teaching materials 29 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); }

30 Živana Komlenov: Existing programming teaching materials 30 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).

31 Živana Komlenov: Existing programming teaching materials 31 Additional materials Sources: –Examples from other courses at member universities that include more complex Java assignments (currently in Serbian) –Examples from representative Java textbooks

32 Živana Komlenov: Existing programming teaching materials 32 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

33 Živana Komlenov: Existing programming teaching materials 33 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

34 Živana Komlenov: Existing programming teaching materials 34 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

35 Živana Komlenov: Existing programming teaching materials 35 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

36 Živana Komlenov: Existing programming teaching materials 36 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.

37 Živana Komlenov: Existing programming teaching materials 37 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.

38 Živana Komlenov: Existing programming teaching materials 38 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

39 Živana Komlenov: Existing programming teaching materials 39 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.

40 Živana Komlenov: Existing programming teaching materials 40 Java Cookbook ‘Java Cookbook’ 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.

41 Živana Komlenov: Existing programming teaching materials 41 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.

42 Živana Komlenov: Existing programming teaching materials 42 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.

43 Živana Komlenov: Existing programming teaching materials 43 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.

44 Živana Komlenov: Existing programming teaching materials 44 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.


Download ppt "Existing programming teaching materials Section ‘Course: Object-Oriented Programming with Java’ (OOJava) Živana Komlenov Department of Mathematics and."

Similar presentations


Ads by Google