improving the odds of success in computer science 1 dr. wayne summers tsys school of computer...

21
Improving the Odds of Success in Computer Science 1 Dr. Wayne Summers TSYS School of Computer Science 16 November 2012

Upload: sherman-montgomery

Post on 23-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

Improving the Odds of Success in Computer

Science 1

Dr. Wayne Summers

TSYS School of Computer Science

16 November 2012

AGENDA

THE Problem OUR Solution Details Q&A

THE Problem!?!

“between 30% and 60% of every university computer science department's intake fail the first programming course.”

“Separating Programming Sheep from Non-Programming Goats,” http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

, created - July 14, 2006, last viewed – October 10, 2012

THE Problem!?!

What Language to Teach?

• “The problem in a current educational setting is deciding which languages (of the thousands out there) to teach students. Majoring on .Net and Java will teach them useful work skills, but some time spent on Ruby, Python or other languages might be more useful in teaching them that there is more than one way to solve a problem.”

Separating Programming Sheep from Non-Programming Goats

July 14, 2006 [http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

]

Position PositionNov-12 Nov-11

1 2 C 2 1 Java 3 6 Objective-C 4 3 C++ 5 5 PHP 6 4 C# 7 7 (Visual) Basic 8 8 Python 9 10 Perl

10 11 Ruby 11 9 JavaScript 12 16 Delphi/Object Pascal 13 13 Lisp

Programming Language

TIOBE Programming Community Index for November 2012

HISTORY • “There is an interesting difference between

teaching C, C++, Java and the older mainframe procedural languages like Fortran, COBOL, and Algol. How could McCracken teach Algol in 100 pages, or Fortran in some 140, or COBOL, which had a lot of detail, in less than 200, and yet the Sun Java Tutorial series is three 950 page volumes and continually refers to the online Sun JavaDoc files?”

[New Methods for Teaching Programming Languages to both Engineering and Computer Science Students by Dr. Peter C. Patton (http://www.micsymposium.org/mics_2004/Patton.pdf)]

CHOICES• List of Hello World Programs in 200 Programming Languages

• 99 Bottles of Beer in over 1500 languages

Sum two numbers (JAVA)

import java.util.Scanner;

public class Sum2Numbers{ public static void main (String[] args) { Scanner scan = new Scanner(System.in); int a, b, sum; System.out.print("Enter a number: "); a = scan.nextInt(); System.out.print("Enter a 2nd number: "); b = scan.nextInt(); sum = a + b; System.out.println("The sum is " + sum ); }}

PROBLEMS WITH JAVA AS A FIRST LANGUAGE

• Scale and Instability

• Linguistics Complexity

• APIs Issues

• Core Syntax and Semantics

[Zanev & Radenski, Two-Language, Two-Paradigm Introductory Computing Curriculum Model and Its Implementation, Serdica Journal of Computing, 2011]

(Seymour Papert, in "Mindstorms")

• “A deep understanding of programming, in particular the notions of successive decomposition as a mode of analysis and debugging of trial solutions, results in significant educational benefits in many domains of discourse, including those unrelated to computers and information technology per se.”

OPTIONS (what we’ve tried)• C++: pre - 2003• Java (2004)• Java with 3-hour closed lab (2006)• Introduction to Computing and Programming

in Java: A Multimedia Approach (2007-2008)• Java with Alice and Media Computation (2009)• Freshmen Learning Communities (Fall 2011)=====================================• Fundamentals of Computer Programming and

Data Structures

Sum two numbers (Python)

a = int(input("Enter a number: "))b = int(input("Enter a 2nd number: "))sum = a + bprint("The sum is ", sum)

OR

a = input("Enter a number: ")b = input("Enter a 2nd number: ")

sum = int(a) + int(b)

print("The sum is ", sum)

Two Language Approach (Python => Java)

• 5 weeks Python– Functions– I/O Loops– Decisions– Defining Functions, Lists– More Loops, Files

• 1 week transition

• 9 weeks Java

Computer Science 1 productive grades

Total Students earning A-B-C

% productive grades

C++

( - 2003)

996 59%

Java (no lab)

(2004-2006)

520 51%

Java (with lab)

(2006-----)

1030 60%

My Grades (% A-B-C)C++ (2 sections) 40%

Java (2 sections) 44%

Java / Multimedia (2 sections) 55%

Java / Freshman Learning Community 64%

Python / Java (SPRING 2012) 83%

Python / Java (with FLC) (FALL 2012) 80-85%

Comparison with Dept.

Computer Science 1 grade analysis

Fall 2000 - Spring 2012

(all faculty and formats)

59%

Fall 2011

(my Freshmen Learning Community)

64%

Spring 2012

(hybrid Python => Java)

83%

Comparison of Cohorts

CSU

GPA

HS

GPA

SAT

Rdg

SAT

Math

Age

2000-2012

2.53 2.99 510 518 23.5

Fall 2011

2.54 3.22 523 536 18.7

Spring 2012

2.79 3.20 474 506 26.0

Comparison with Java-only class

Wayne’s (n=34) CS1 CS2 CS3

% ABC 85% 95% 83%

% continue 62% 18%

Other (n=20)

% ABC 75% 100% 0%

% continue 50% 5%

% CS/IT 65%

Resources• Insights on teaching computer programming | Lambda the Ultimate • http://lambda-the-ultimate.org/node/view/1195 • Computer Science for Non-Majors Takes Many Forms - NYTimes.com • http://www.nytimes.com/2012/04/01/business/computer-science-for-non-majors-takes-many-forms.html • A Very Quick Comparison of Popular Languages for Teaching ... • http://www.ariel.com.au/a/teaching-programming.html • List of educational programming languages - Wikipedia, the free ... • http://en.wikipedia.org/wiki/List_of_educational_programming_languages • Introduction to Computer Programming - What Is It? • http://www.bfoit.org/Intro_to_Programming/Programming.html • Philip Guo - Why Python is a great language for teaching beginners ... • http://www.pgbovine.net/python-teaching.htm • Teaching Programming • https://engineering.purdue.edu/kak/TeachingProgramming.pdf • Teaching Computer Programming to High School students: An ... • http://www.austintek.com/python_class/python_class.sect_1.html • The challenges of teaching computer programming • http://dl.acm.org/citation.cfm?id=214913 • INSTRUCTIONAL STRATEGY IN THE TEACHING OF COMPUTER ... • http://www.tojet.net/articles/v9i2/9214.pdf • Introduction to Computer Programming - What Is It • http://www.bfoit.org/itp/Programming.html http://www.codinghorror.com/blog/2006/07/separating-programming-

sheep-from-non-programming-goats.html • Testing Programming Aptitude– by Saeed Dehnadi • http://www.eis.mdx.ac.uk/research/PhDArea/saeed/S_Dehnadi_ppij-2006__2.pdf (paper)• “Why Johnny can't program” - http://www.bricklin.com/wontprogram.htm• “New Methods for Teaching Programming Languages to both Engineering and Computer Science

Students by Dr. Peter C. Patton (http://www.micsymposium.org/mics_2004/Patton.pdf)

04/19/23 21

QUESTIONS?

Wayne SummersWayne SummersTSYS School of Computer ScienceTSYS School of Computer Science

(706) 507-8170(706) 507-8170

http://[email protected]