Introductory Computer Programming, Problem Solving and Computer Assisted Assessment Charlie Daly, DCU John Waldron, TCD.

Slides:



Advertisements
Similar presentations
The Lab Tutor System of a Large Undergraduate Class: The Lab Tutors Perspective Charlie Daly, Dave Donnellan, Monica Ward and Ray Walshe.
Advertisements

Computer Programming Mr. José A. Ortiz Morris. Computer Language  Languages that the computer understands.  They are low level languages. (BINARY 1.
Course Web Site – Also linked from Blackboard Course Materials – Excel Tutorials – Access Tutorials – PPT.
Chapter 7 Introduction to Procedures. So far, all programs written in such way that all subtasks are integrated in one single large program. There is.
Functional Maths Skills Learner Issues Su Nicholson Principal Examiner for Functional Maths Edexcel Resources produced as part of LSIS funded project.
Learning and Teaching Conference 2012 Skill integration for students through in-class feedback and continuous assessment. Konstantinos Dimopoulos City.
Lecture Roger Sutton 21: Revision 1.
Quick Sort, Shell Sort, Counting Sort, Radix Sort AND Bucket Sort
Theoretical Program Checking Greg Bronevetsky. Background The field of Program Checking is about 13 years old. Pioneered by Manuel Blum, Hal Wasserman,
1 CS2200 Software Development Lecture: Testing and Design A. O’Riordan, 2008 K. Brown,
CSC1016 Coursework Clarification Derek Mortimer March 2010.
Computer Science 1620 Variables and Memory. Review Examples: write a program that calculates and displays the average of the numbers 45, 69, and 106.
System Design and Analysis
Pseudocode and Algorithms
This material in not in your text (except as exercises) Sequence Comparisons –Problems in molecular biology involve finding the minimum number of edit.
Automatic Plagiarism detection Charlie Daly Jane Horgan Dublin City University.
Programming Logic and Design, Introductory, Fourth Edition1 Understanding Computer Components and Operations (continued) A program must be free of syntax.
ITP © Ron Poet Lecture 1 1 IT Programming Introduction.
1 I.Introduction to Algorithm and Programming Algoritma dan Pemrograman – Teknik Informatika UK Petra 2009.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Introduction to Systems Analysis and Design Trisha Cummings.
Recitation Week #1 Chem Queens College Spring 2010.
CC0002NI – Computer Programming Computer Programming Er. Saroj Sharan Regmi Week 7.
An innovative learning model for computation in first year mathematics Birgit Loch Department of Mathematics and Computing, USQ Elliot Tonkes CS Energy,
Invitation to Computer Science, Java Version, Second Edition.
PYTHON. Python is a high-level, interpreted, interactive and object- oriented scripting language. Python was designed to be highly readable which uses.
Polymorphism Lecture-10. Print A Cheque A Report A Photograph PrintCheque() PrintReport() PrintPhoto() Printing.
An analysis of exam results in the Object-Oriented Programming course at „Politehnica” University of Timisoara Ioan Jurca.
1 Project Information and Acceptance Testing Integrating Your Code Final Code Submission Acceptance Testing Other Advice and Reminders.
Algorithms and their Applications CS2004 ( ) Dr Stephen Swift 1.2 Introduction to Algorithms.
School of Computer Science & Information Technology G6DICP - Lecture 9 Software Development Techniques.
Testing and Debugging Version 1.0. All kinds of things can go wrong when you are developing a program. The compiler discovers syntax errors in your code.
Programming for Beginners Martin Nelson Elizabeth FitzGerald Lecture 5: Software Design & Testing; Revision Session.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Systems Life Cycle. Know the elements of the system that are created Understand the need for thorough testing Be able to describe the different tests.
Fundamental Programming: Fundamental Programming Introduction to C++
Q and A for Sections 2.9, 4.1 Victor Norman CS106 Fall 2015.
Java server pages. A JSP file basically contains HTML, but with embedded JSP tags with snippets of Java code inside them. A JSP file basically contains.
Looping and Counting Lecture 3 Hartmut Kaiser
BMTRY 789 Lecture 11: Debugging Readings – Chapter 10 (3 rd Ed) from “The Little SAS Book” Lab Problems – None Homework Due – None Final Project Presentations.
Data Structures and Algorithm Analysis Introduction Lecturer: Ligang Dong, egan Tel: , Office: SIEE Building.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
ALGORITHMS.
COIT29222 Structured Programming 1 COIT29222-Structured Programming Lecture Week 02  Reading: Textbook(4 th Ed.), Chapter 2 Textbook (6 th Ed.), Chapters.
1 Printing in Python Every program needs to do some output This is usually to the screen (shell window) Later we’ll see graphics windows and external files.
The Hashemite University Computer Engineering Department
CS 127 Exceptions and Decision Structures. Exception Handling This concept was created to allow a programmer to write code that catches and deals with.
Using Sequential Containers Lecture 8 Hartmut Kaiser
Comments, Conditional Statements Continued, and Loops Engineering 1D04, Teaching Session 4.
Algorithms and Pseudocode
1 UMBC CMSC 104, Section Fall 2002 Functions, Part 1 of 3 Topics Top-down Design The Function Concept Using Predefined Functions Programmer-Defined.
ALGORITHMS AND FLOWCHARTS. Why Algorithm is needed? 2 Computer Program ? Set of instructions to perform some specific task Is Program itself a Software.
Fundamental Programming Fundamental Programming Introduction to Functions.
CMSC 104, Section 301, Fall Lecture 18, 11/11/02 Functions, Part 1 of 3 Topics Using Predefined Functions Programmer-Defined Functions Using Input.
4 - Conditional Control Structures CHAPTER 4. Introduction A Program is usually not limited to a linear sequence of instructions. In real life, a programme.
Programming revision Revision tip: Focus on the things you find difficult first.
Programming what is C++
What is a CAT? What is a CAT?.
Programming Languages
2008/09/22: Lecture 6 CMSC 104, Section 0101 John Y. Park
ALGORITHMS AND FLOWCHARTS
Algorithms & Pseudocode
Problem Solving Skill Area 305.1
Algorithm and Ambiguity
Java Coding 4 (part2) David Davenport Computer Eng. Dept.,
CISC101 Reminders Assignment 3 due today.
Programming Assignment Tutorial
Software Development Techniques
CHAPTER 6 Testing and Debugging.
Presentation transcript:

Introductory Computer Programming, Problem Solving and Computer Assisted Assessment Charlie Daly, DCU John Waldron, TCD

Preview: A Problem A Programmable Robot

A Problem Solving a maze. Program a Robot to Solve a maze Analyse a program that is supposed to solve a maze

But... Anybody can check if the program works. –Create a maze and check if the robot can solve it. And provide feedback if it doesn’t work –Show what the robot did.

So... Certain problems are very challenging but they can be checked very simply... easy to provide useful feedback to faulty programs End of Preview Mathematical proofs similar, easy to check, difficult to conceive

Programming is Problem Solving "programming is a complex intellectual activity based on deep logical principles" (Felleisen 2002) Polya's "How to Solve it" "sheds more light on the activity of software design … than any software design book I've seen" (McConnell 2002)

Learning Programming Learner programmers must master –programing language syntax –problem solving techniques. Computer feedback is useful for both –Compiler catches syntax errors –Testing catches logic errors } RoboProf catches both of these

Talk Outline Programming Courses are not working. Programming ability is difficult to assess The Solution: Proper Assessment Implementation issues (software and peopleware) Results Conclusions

Programming Courses are not working Students in Introductory Programming Courses do not learn to program! An international multi-institutional study of introductory programming courses ITiCSE 2001 “Do students in introductory computing courses know how to program at the expected skill level?”

No!

What is Wrong? Assessment "The spirit and style of student assessment defines the de facto curriculum" “Assessing Students”, Derek Rowntree '77

What is Wrong? It is difficult to assess programming ability in a traditional written exam. Programming exercises are subject to plagiarism; a serious problem in introductory programming courses. If you do not assess something, the students will not learn it.

What's wrong with Exams Two sides of programming –language syntax (easy to examine) –problem solving (hard to examine) Unoriginal (repeat) questions Marks for attempting a question Assuming insight where none exists Objectivity Lecturer doesn't want to fail whole class. One exam

What's wrong with Assignments Most students don't see a problem with using somebody else's code ("if I understand it it's OK") Plagiarism is a huge problem. Lecturers frequently know it's happening and do nothing. don't understand there's a difference between writing and understanding

The Bright Shining Lie Lecturers think the students know how to program –they passed the exams Students think they know how to program –they passed the exams Students have an excuse: for students education is about passing exams

Talk Outline Programming Courses are not working. Programming ability is difficult to assess The Solution: Proper Assessment Implementation issues (software and peopleware) Results Conclusions

The Solution: Proper assessment Come up with original challenging problems. Mark properly; only give marks if the solution is completely correct. Allow the student to get computer feedback. –(compiler errors, testing) programming is a process Make students aware of the assessment!

Context: the course Introductory Programming Course –one semester: 12 weeks of lectures Students –400 (300 pure Computing) –no prior programming experience –education ≡ passing exams Exams –programming exams week 6 and 12 (Weighting 30%) –written exam week 16 (Weighting 40%)

RoboProf Automated Program marker WWW interface Runs a student's program using different input and check that the program produces the correct output. Student is shown the result and (if not correct) may modify and resubmit their program. more

RoboProf Server Problem Specification The Student logs on An applet compiles and runs the program locally The program and output are sent to the server for marking Results are returned to the student Browser The student writes a program and submits it

The Programming Exam 3 Questions (in increasing difficulty) 2 hours (first half hour without computer) Not open book, but may use a 'cheatsheet' During the exam the students –Write a program –Submit it to RoboProf –View feedback –May resubmit without penalty

The Programming Exam Students know their result at the end of the exam. –Fewer complaints –Greater insight into their ability –More likely to listen when subsequently shown a correct solution General effect: formative assessment works.

RoboProf Vs Manual Exam Standard CAA advantages –Objective –Fast Feedback Avoids the problem of the manual marker interpreting the student solution Models standard program development process (computer feedback) Huge resource requirements (~400 PCs)

RoboProf Vs Manual Exam Results: Not much difference. Markers only awarded marks for programs that definitely looked like they might work. Students knew that the marking system was similar to the programming exams.

Student Impressions

"I liked the web-based test"

Student Impressions "The marking system was fair"

Comparison with previous years There were too many simultaneous changes to the course to draw firm conclusions (programming language, number of students, lecturers, facilities) Results of last three years –1999: 30% –2000: 20% –2001: ?

Conclusions CAA can evaluate problem solving ability –Using approriate problems Programming problems have added advantages –Models the program development process. –Can show errors without showing the solution. –Avoids the inherent problems that humans have assessing programming problems

Future Work Improve Feedback Make it adaptable (can be used by other institutions)

Question 1 Write a program that asks for a price and makes an assessment: if the price is more than £100.00, then print "too high", if it is less than £50.00 print "that's cheap" otherwise print "OK" A sample run might be What is the price? too high or What is the price? OK

Question 3 (Haggling) A street seller needs a program to help him haggle. He only sells one item, worth £100, as soon as he's offered this (or more) he accepts the offer. If he's offered less, he demands a price such that the average of the offer and the demanded price is £100. He keeps this up until a deal is done. A sample run might be What is your offer? 400 It's a deal! or What is your offer? 50 I'll sell it for 150. What is your offer? 90 I'll sell it for 110. What is your offer? 100 It's a deal! You can assume that a deal is always done. Note that the first demanded price was 150. This was in response to the offered price of 50 (the average of 150 and 50 is 100).

Question 1 Write a program that reads in a sequence of integers and calculates the average, then prints out how many elements are greater than the average. A sample run might look like: How many numbers 7 Enter 7 numbers: numbers are greater than the average. Note that the average is about 7.9, the elements 8, 67 and 10 are greater than that.

Question 2 Write a program that finds the tags in a String of characters. Print each tag on a separate line. Tags are contained in braces '{' and '}'. You may assume that the String is well formed, i.e. all braces match. A sample run might look like: Enter a string: Here is a tagged String {one} and {another}. The tags are One another Hint: You may find the following String methods useful.