SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
PYTHON IN          Jussi Kasurinen,
                    D.Sc. (SE)


 EDUCATION          Lappeenranta
                    University of
                    Technology
WHY WE WENT THERE
WHO ARE YOU TO TALK ABOUT PYTHON?

 Jussi Kasurinen, D.Sc. (Software Engineering)
     Author of some of the first Finnish Python manuals
     General topics ”Python –ohjelmointiopas” (2006)
     Python Imaging library (2007)
     Tkinter and GUIs (2007)
     Cryptography toolkit (2008)
     Book, Python 3 –ohjelmointi, Docendo/WSOYPro 2009

 Back in 2006, Python really had not broken through to the mainstream
  in Finland.
   One book in Finnish, subchapter along with Java and Prolog
 Our group was looking for a new programming language to replace old
  and tired C-based programming course
WHO ARE YOU TO TALK ABOUT PYTHON?

 Decision to adopt Python for Fall of 2006 introductory programming was
  made.
 Started, or at least preceded the “boom” of Python programming courses
  at the Finnish universities
 Good chance that if you have studied Python in Finland, you have been
  doing it with our material, or material based on our material.
 Online courses, student assessment models, introductory robotics,
  visualization tools…

Today I am going to give a discussion and a short history trip
  to the early years of Python in Finland, and talk about using
  the language in education (and what we did whit it).
THE PROBLEM (IN CONTEXT OF 2006)

 Students do nothing
   Or at least fail the larger project or exams
   Attendance percentages low
 Programming is not interesting
   Course drop-out percentages high, no interest to have effort on understanding
    the concepts.
   Failure to see the link between the programming tasks and the actual IT stuff
    everyone uses.
 Programming is difficult
   Even if the motivation is good, programming is still hard.
 Unfamiliar tools, unfamiliar operating environment if not Windows
   More time spent on learning the tools than learning the language.
WHY WE ADOPTED PYTHON? (IN CONTEXT OF
               2006)

Excellent ”activity for lines of code”-ratio
Free, simple Windows-platform tools that actually
 worked
  – Same tools for Linux, OSX
Real platform independence
  – One set of instructions, all platforms covered.
WHY WE ADOPTED PYTHON? (IN CONTEXT OF
               2006)
 Simple, clean syntax
    Easy to teach, no unnecessary details
    Push to remove unnecessary redundancy from syntax
     structures (I am looking at you Ruby!)
    Ability to data mine student submissions and make
     models
 Easily extensible
    PIL for manipulating images and drawing stuff
    Serial adaptors to work with robots
    Py2EXE to wrap stuff up
 Not a toy, real programming work with full, usable language
FUNDAMENTALS

 It takes 10 years to become expert in programming. (Winslow
  1996)
 Several concepts, structure understanding required.
 Application of dedicated software to ease the learning process.
    Motivational aspects
 Data manipulation and command line operations not interesting
  for the Internet-generation. (Guzdial and Soloway 2002)
    Media literature
       Programming should be universal skill in information society.
       Video and sound, adjustments for different focus groups
       Architects, distance learners, liberal arts…
FUNDAMENTALS

 Programming is hard to learn: students have to learn several
  concepts and structural rules before they can create anything
  interesting.
 Programming is learned by first understanding the structures
  themselves, and later by combining these structures to create
  more and more complex functionalities.
 Programming languages offer different “building blocks” –
  structures – of varying complexity to enable this behavior.
 However, there are usually several similar or redundant structures
  (iteration, condition).
   Some structures can overtake activities (conditions, exception handlers)
So What Do The Newcomers See When Getting
 Started With Programming Languages?
SO WHY PYTHON?

• Earlier studies show, that the infrastructure has major impact over
  course performance.
    Results with our earlier course; badly fragmented set of different tasks that
     has no relation to each other.
    Case studies with art students, at engineering classes etc.
• Usability is an issue, usability over performance should be used at the
  first courses
   • An argument was made that the first programming course should be the most
     difficult one to “cull the herd” and teach the students to approach problems
     properly. Why?
• Simple tools which allow all that is necessary but do not require anything
  that has no self-evident purpose


“Just trust me, we’ll get back to that later.”
CLASSICAL EXAMPLE

   Python                      Java

  #-*- coding:cp1252 -*-       class HelloWorld
  print(”Hello, world!”)       {
                               public static void main(String[] args)
                                  {
                                  System.out.println("Hello, world!");
                                  }
                               }



How many concepts do you have to explain to cover all these syntax words?
CONCERNING STUDENT LEARNING

 Students seem to start favor some structures over another,
  to a point where personal preferences supersede practicality.
   Besides practicality, there are also undesirable issues like shortcuts or
    disregard of good programming manners.
 However, the way the students program can be used to
  assess their programming knowledge:
   What structures are they using?
   Do they understand all of the structures?
   Are they using the structures correctly?
   What kind of errors are they encountering?
STUDENT MODELING

 Structure mapping was done with Python program reading
  database dump:
   Search for syntax keywords from non-commented lines.
   Only functional source codes in the dump!
   Python syntax a huge asset in the development of evaluation tools.
 Five categories were tested:
   while should be used if the number of iterations is not known, otherwise for.
   Every input should be taken as a string with raw_input and converted to a
    suitable type.
   Each open file should be closed after use.
   Functions (def) should be used to implement recurrent behavior or refactor
    large bodies of code.
   Each type conversion to a numeric value and file openings for reading should
    be secured with an exception handler.

 Final calculations for the BKT-analysis were done with
  external tools.
STUDENT MODELING

               For the       3.Error
1.             error log     analysis
Collection

                             4.Structure
               For the
                             analysis
2. Filtering   submission
               log
                             5. BKT-
                             modeling


                            Unlearned              Learned
                             Invalid                Valid
                                            p(T)
                             1-p(L0)                p(L0)
                                     p(G)               p(S)
                             Valid                  Invalid
STUDENT MODELING

4500   4270
4000

3500

3000

2500

2000
                 1536
1500                     1193
1000                                659
                                               413       357    335     311
 500                                                                               183   155         8
   0
                                                          e

                                                               IO




                                                                                                rt
                                                                                         v
                e
        x




                                                                                 d
                                          ex




                                                                       ue
                      pe


                                    n




                                                       ut




                                                                                       di
            am
     ta




                                                                              un




                                                                                              po
                                tio


                                           d




                                                                    al
                    Ty




                                                                                     0-
                                                    ib
  yn




                                        In




                                                                               o
                             ta




                                                                                             Im
            N




                                                                    V
                                                ttr




                                                                            nb
S




                          en




                                               A




                                                                        U
                           d
                        In
RECIPE FOR THE PROFILES

 XML or CSV dump for all user data
    <student id>::<assignment id>::<source>
 Load data to 3-dimensional list
 Sanity checks
 Profile the source codes for applied features
    Non-commented applications for profiles
 Compare the application against the ”should have used”-list
 Calculate the profile for each structure for each student based on all the
  assignments where certain structure was expected
MAKING MODELS
                   100                     100        95
% of submissions




                                94                         92
                    80    92
                    60
                    40
                                                 48                                       How students handle
                                     41
                    20                                                                      file operations
                     0
                         10/1 10/2 11/1 11/2 12/2 13/1 13/2
                                  Week/Assignment


                                                                                 100
                                                              % of submissions
                                                                                  80
                                                                                          71                            73
                                                                                  60
                                                                                                                             54
                                                                                  40
                                                                                                          23   22
                         How they handle                                          20
                                                                                           5         10             8
                           exceptions                                              0
                                                                                       10/2 11/1 11/2 12/2 13/1 13/2 13/3 14/2
                                                                                                 Week/Assignment
MAKING MODELS

                  100
                   90
                   80
                         58 63   48 62                                   67 67
% - of students




                   70
                   60                          46 48          49 52
                   50
                   40
                   30
                   20
                   10                                                             How students learned
                    0
                         While    For         Functions     Exceptions    Files

                                  Threshold p= 0.05   Theshold p = 0.1




                        Comparison of two
                         different courses
USING VIRTUAL LEARNING ENVIRONMENT

 We used Viope virtual learning environment (VLE) to
  collect student
  submissions.
                   www.viope.com
   3732 source codes and 9420 errors
 VLE also provided additional services:
   Submission validation: the source code worked as intended
    (input/output matching)
   Hinting service: “First aid” service to help students in a need of
    assistance.
   Plagiarism detection: similarity testing with prior submissions.
   Student statistics: teachers could observe how much time
    students had used, what kind of errors they had encountered, in
    which time of the week/day they are actively working etc…
VISUAL TOOLS, KILPPARI

  Visualization tool to assist teaching
  Not only tool, also an API exercise
   for students
import control
import visualization
control.MyCommands = ["square"]
def Parser(command):
  if command == "square":
    for i in range(0,4):
      visualization.TurnLeft()
      for j in range(0,2):
        visualization.TakeStep()
    return command
  else:
    return "Invalid command:"+command
ROBOT TOOLS

 Python proved to be an excellent platform to control a small robot.
 Kit build, gives students some idea on how to work “outside the grey
  box”
 Related to the Karel the Robot (Guido van Robot) concept


     import serial
     portti = serial.Serial(3)
     portti.write(b"1c")
     portti.close()


     …. And there she goes!
WHAT WE LEARNED ABOUT STUDENTS?

 Students work at night.
    VLE system is needed, as students tend to work at all hours
    Also, automation to do basic sanity checks on student submissions
 Nobody does anything during the weekends.
 Some people just don’t get programming (over 150h spent on exercises
  of 14 week course)
 No common sense; students use brute force to get the results they need.
 Engineering students do not like visualization tools
    ”Toys for elementary school”
 Robots are cool.
 Recording the lectures and putting them to web is really easy task to
  add.
SO WHAT DID WE LEARN IN GENERAL?

 Python was definitely the right choice.
 Visualization tools divide opinions, but for truly introductory level they can
  be successful.
 Python syntax makes it easy to model students with Bayesian models
    Same content, different outcomes
    Predict learning, easy to collect topics that should be revisited
 Steering hardware with the software should be taken more into the
  course syllabus (motivational reasons).
 Course book is a must!
    Not a large 1000-page 200 USD brick that explains everything
    Cheap (free?) manual that covers all of the course topics
 IDLE was really all that was needed.
CURRENT WORK


 Immigration to Python 3
 More open-source material to allow self-study in Python
  topics
 Introduction to Python-wiki, by University of Oulu
 Viope develops the Python web-course to cover new markets
  in Africa and Asia.
Jussi Kasurinen,
                            D.Sc. (SE)


QUESTIONS?                  Lappeenranta
                            University of
                            Technology




...Or drop me an email at
jussi.kasurinen@lut.fi

Mais conteúdo relacionado

Mais procurados

Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams Atlassian
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideRohit Arora
 
Flutter: Future of App Development
Flutter: Future of App DevelopmentFlutter: Future of App Development
Flutter: Future of App Development9 series
 
Introduction to JMeter
Introduction to JMeterIntroduction to JMeter
Introduction to JMeterGalih Lasahido
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flowKnoldus Inc.
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model abodeltae
 
Presentation on graphics processing unit (GPU)
Presentation on graphics processing unit (GPU)Presentation on graphics processing unit (GPU)
Presentation on graphics processing unit (GPU)MuntasirMuhit
 
Flutter vs React Native | Edureka
Flutter vs React Native | EdurekaFlutter vs React Native | Edureka
Flutter vs React Native | EdurekaEdureka!
 
Repository Management with JFrog Artifactory
Repository Management with JFrog ArtifactoryRepository Management with JFrog Artifactory
Repository Management with JFrog ArtifactoryStephen Chin
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and GithubHouari ZEGAI
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An IntroductionBehzad Altaf
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagramsDilum Navanjana
 

Mais procurados (20)

Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
 
Git Branching for Agile Teams
Git Branching for Agile Teams Git Branching for Agile Teams
Git Branching for Agile Teams
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
 
Flutter: Future of App Development
Flutter: Future of App DevelopmentFlutter: Future of App Development
Flutter: Future of App Development
 
Flutter vs React Native 2019
Flutter vs React Native 2019Flutter vs React Native 2019
Flutter vs React Native 2019
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Introduction to JMeter
Introduction to JMeterIntroduction to JMeter
Introduction to JMeter
 
Introduction to git flow
Introduction to git flowIntroduction to git flow
Introduction to git flow
 
A successful Git branching model
A successful Git branching model A successful Git branching model
A successful Git branching model
 
Presentation on graphics processing unit (GPU)
Presentation on graphics processing unit (GPU)Presentation on graphics processing unit (GPU)
Presentation on graphics processing unit (GPU)
 
Git challenges
Git challengesGit challenges
Git challenges
 
Git in 10 minutes
Git in 10 minutesGit in 10 minutes
Git in 10 minutes
 
Flutter vs React Native | Edureka
Flutter vs React Native | EdurekaFlutter vs React Native | Edureka
Flutter vs React Native | Edureka
 
Repository Management with JFrog Artifactory
Repository Management with JFrog ArtifactoryRepository Management with JFrog Artifactory
Repository Management with JFrog Artifactory
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Flutter introduction
Flutter introductionFlutter introduction
Flutter introduction
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Git and Github
Git and GithubGit and Github
Git and Github
 
Git basics to advance with diagrams
Git basics to advance with diagramsGit basics to advance with diagrams
Git basics to advance with diagrams
 

Destaque (6)

Attitude
AttitudeAttitude
Attitude
 
Wisdom Quotes - Shakti Motivation
Wisdom Quotes - Shakti MotivationWisdom Quotes - Shakti Motivation
Wisdom Quotes - Shakti Motivation
 
Dit tetun 1
Dit tetun 1Dit tetun 1
Dit tetun 1
 
Get rid of stress
Get rid of stressGet rid of stress
Get rid of stress
 
Lightening in a jar- Motivation!
Lightening in a jar- Motivation!Lightening in a jar- Motivation!
Lightening in a jar- Motivation!
 
Stress Management
Stress ManagementStress Management
Stress Management
 

Semelhante a Python in education

Python - An Introduction
Python - An IntroductionPython - An Introduction
Python - An IntroductionSwarit Wadhe
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsEelco Visser
 
Jonning's Design Portfolio 2009
Jonning's Design Portfolio 2009Jonning's Design Portfolio 2009
Jonning's Design Portfolio 2009Jonning Chng
 
What is Python? (Silicon Valley CodeCamp 2015)
What is Python? (Silicon Valley CodeCamp 2015)What is Python? (Silicon Valley CodeCamp 2015)
What is Python? (Silicon Valley CodeCamp 2015)wesley chun
 
Using SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonUsing SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonDavid Beazley (Dabeaz LLC)
 
Python final presentation kirti ppt1
Python final presentation kirti ppt1Python final presentation kirti ppt1
Python final presentation kirti ppt1Kirti Verma
 
python for linguists
python for linguistspython for linguists
python for linguistsshukaihsieh
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfbhagyashri686896
 
Python_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfPython_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfrupaliakhute
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfsannykhopade
 
Python_vision_academy notes
Python_vision_academy notes Python_vision_academy notes
Python_vision_academy notes rajaniraut
 
Why Python in required in Civil Engineering
Why Python in required in Civil EngineeringWhy Python in required in Civil Engineering
Why Python in required in Civil EngineeringRushikesh Kolhe
 
sahil mooc ppt (1).ppt
sahil mooc ppt (1).pptsahil mooc ppt (1).ppt
sahil mooc ppt (1).pptSahil564199
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)wesley chun
 

Semelhante a Python in education (20)

Python - An Introduction
Python - An IntroductionPython - An Introduction
Python - An Introduction
 
Ti1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming LinguisticsTi1220 Lecture 1: Programming Linguistics
Ti1220 Lecture 1: Programming Linguistics
 
Jonning's Design Portfolio 2009
Jonning's Design Portfolio 2009Jonning's Design Portfolio 2009
Jonning's Design Portfolio 2009
 
How To Tame Python
How To Tame PythonHow To Tame Python
How To Tame Python
 
Os Goodger
Os GoodgerOs Goodger
Os Goodger
 
What is Python? (Silicon Valley CodeCamp 2015)
What is Python? (Silicon Valley CodeCamp 2015)What is Python? (Silicon Valley CodeCamp 2015)
What is Python? (Silicon Valley CodeCamp 2015)
 
Using SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with PythonUsing SWIG to Control, Prototype, and Debug C Programs with Python
Using SWIG to Control, Prototype, and Debug C Programs with Python
 
Python final presentation kirti ppt1
Python final presentation kirti ppt1Python final presentation kirti ppt1
Python final presentation kirti ppt1
 
python for linguists
python for linguistspython for linguists
python for linguists
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdf
 
Python_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdfPython_final_print_batch_II_vision_academy (1).pdf
Python_final_print_batch_II_vision_academy (1).pdf
 
Python_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdfPython_final_print_batch_II_vision_academy.pdf
Python_final_print_batch_II_vision_academy.pdf
 
Python_vision_academy notes
Python_vision_academy notes Python_vision_academy notes
Python_vision_academy notes
 
EuropeanaTech PGM12
EuropeanaTech PGM12EuropeanaTech PGM12
EuropeanaTech PGM12
 
Ch-3.pdf
Ch-3.pdfCh-3.pdf
Ch-3.pdf
 
Learning to code in 2020
Learning to code in 2020Learning to code in 2020
Learning to code in 2020
 
Why Python in required in Civil Engineering
Why Python in required in Civil EngineeringWhy Python in required in Civil Engineering
Why Python in required in Civil Engineering
 
Python in 15 minutes
Python in 15 minutesPython in 15 minutes
Python in 15 minutes
 
sahil mooc ppt (1).ppt
sahil mooc ppt (1).pptsahil mooc ppt (1).ppt
sahil mooc ppt (1).ppt
 
What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)What is Python? (Silicon Valley CodeCamp 2014)
What is Python? (Silicon Valley CodeCamp 2014)
 

Último

Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxthorishapillay1
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPCeline George
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...Nguyen Thanh Tu Collection
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 

Último (20)

Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
Proudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptxProudly South Africa powerpoint Thorisha.pptx
Proudly South Africa powerpoint Thorisha.pptx
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptxYOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
YOUVE_GOT_EMAIL_PRELIMS_EL_DORADO_2024.pptx
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
How to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERPHow to do quick user assign in kanban in Odoo 17 ERP
How to do quick user assign in kanban in Odoo 17 ERP
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
HỌC TỐT TIẾNG ANH 11 THEO CHƯƠNG TRÌNH GLOBAL SUCCESS ĐÁP ÁN CHI TIẾT - CẢ NĂ...
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 

Python in education

  • 1. PYTHON IN Jussi Kasurinen, D.Sc. (SE) EDUCATION Lappeenranta University of Technology WHY WE WENT THERE
  • 2. WHO ARE YOU TO TALK ABOUT PYTHON?  Jussi Kasurinen, D.Sc. (Software Engineering)  Author of some of the first Finnish Python manuals  General topics ”Python –ohjelmointiopas” (2006)  Python Imaging library (2007)  Tkinter and GUIs (2007)  Cryptography toolkit (2008)  Book, Python 3 –ohjelmointi, Docendo/WSOYPro 2009  Back in 2006, Python really had not broken through to the mainstream in Finland.  One book in Finnish, subchapter along with Java and Prolog  Our group was looking for a new programming language to replace old and tired C-based programming course
  • 3. WHO ARE YOU TO TALK ABOUT PYTHON?  Decision to adopt Python for Fall of 2006 introductory programming was made.  Started, or at least preceded the “boom” of Python programming courses at the Finnish universities  Good chance that if you have studied Python in Finland, you have been doing it with our material, or material based on our material.  Online courses, student assessment models, introductory robotics, visualization tools… Today I am going to give a discussion and a short history trip to the early years of Python in Finland, and talk about using the language in education (and what we did whit it).
  • 4. THE PROBLEM (IN CONTEXT OF 2006)  Students do nothing  Or at least fail the larger project or exams  Attendance percentages low  Programming is not interesting  Course drop-out percentages high, no interest to have effort on understanding the concepts.  Failure to see the link between the programming tasks and the actual IT stuff everyone uses.  Programming is difficult  Even if the motivation is good, programming is still hard.  Unfamiliar tools, unfamiliar operating environment if not Windows  More time spent on learning the tools than learning the language.
  • 5. WHY WE ADOPTED PYTHON? (IN CONTEXT OF 2006) Excellent ”activity for lines of code”-ratio Free, simple Windows-platform tools that actually worked – Same tools for Linux, OSX Real platform independence – One set of instructions, all platforms covered.
  • 6. WHY WE ADOPTED PYTHON? (IN CONTEXT OF 2006)  Simple, clean syntax  Easy to teach, no unnecessary details  Push to remove unnecessary redundancy from syntax structures (I am looking at you Ruby!)  Ability to data mine student submissions and make models  Easily extensible  PIL for manipulating images and drawing stuff  Serial adaptors to work with robots  Py2EXE to wrap stuff up  Not a toy, real programming work with full, usable language
  • 7. FUNDAMENTALS  It takes 10 years to become expert in programming. (Winslow 1996)  Several concepts, structure understanding required.  Application of dedicated software to ease the learning process.  Motivational aspects  Data manipulation and command line operations not interesting for the Internet-generation. (Guzdial and Soloway 2002)  Media literature  Programming should be universal skill in information society.  Video and sound, adjustments for different focus groups  Architects, distance learners, liberal arts…
  • 8. FUNDAMENTALS  Programming is hard to learn: students have to learn several concepts and structural rules before they can create anything interesting.  Programming is learned by first understanding the structures themselves, and later by combining these structures to create more and more complex functionalities.  Programming languages offer different “building blocks” – structures – of varying complexity to enable this behavior.  However, there are usually several similar or redundant structures (iteration, condition).  Some structures can overtake activities (conditions, exception handlers) So What Do The Newcomers See When Getting Started With Programming Languages?
  • 9.
  • 10.
  • 11.
  • 12.
  • 13. SO WHY PYTHON? • Earlier studies show, that the infrastructure has major impact over course performance.  Results with our earlier course; badly fragmented set of different tasks that has no relation to each other.  Case studies with art students, at engineering classes etc. • Usability is an issue, usability over performance should be used at the first courses • An argument was made that the first programming course should be the most difficult one to “cull the herd” and teach the students to approach problems properly. Why? • Simple tools which allow all that is necessary but do not require anything that has no self-evident purpose “Just trust me, we’ll get back to that later.”
  • 14. CLASSICAL EXAMPLE  Python  Java #-*- coding:cp1252 -*- class HelloWorld print(”Hello, world!”) { public static void main(String[] args) { System.out.println("Hello, world!"); } } How many concepts do you have to explain to cover all these syntax words?
  • 15. CONCERNING STUDENT LEARNING  Students seem to start favor some structures over another, to a point where personal preferences supersede practicality.  Besides practicality, there are also undesirable issues like shortcuts or disregard of good programming manners.  However, the way the students program can be used to assess their programming knowledge:  What structures are they using?  Do they understand all of the structures?  Are they using the structures correctly?  What kind of errors are they encountering?
  • 16. STUDENT MODELING  Structure mapping was done with Python program reading database dump:  Search for syntax keywords from non-commented lines.  Only functional source codes in the dump!  Python syntax a huge asset in the development of evaluation tools.  Five categories were tested:  while should be used if the number of iterations is not known, otherwise for.  Every input should be taken as a string with raw_input and converted to a suitable type.  Each open file should be closed after use.  Functions (def) should be used to implement recurrent behavior or refactor large bodies of code.  Each type conversion to a numeric value and file openings for reading should be secured with an exception handler.  Final calculations for the BKT-analysis were done with external tools.
  • 17. STUDENT MODELING For the 3.Error 1. error log analysis Collection 4.Structure For the analysis 2. Filtering submission log 5. BKT- modeling Unlearned Learned Invalid Valid p(T) 1-p(L0) p(L0) p(G) p(S) Valid Invalid
  • 18. STUDENT MODELING 4500 4270 4000 3500 3000 2500 2000 1536 1500 1193 1000 659 413 357 335 311 500 183 155 8 0 e IO rt v e x d ex ue pe n ut di am ta un po tio d al Ty 0- ib yn In o ta Im N V ttr nb S en A U d In
  • 19. RECIPE FOR THE PROFILES  XML or CSV dump for all user data  <student id>::<assignment id>::<source>  Load data to 3-dimensional list  Sanity checks  Profile the source codes for applied features  Non-commented applications for profiles  Compare the application against the ”should have used”-list  Calculate the profile for each structure for each student based on all the assignments where certain structure was expected
  • 20. MAKING MODELS 100 100 95 % of submissions 94 92 80 92 60 40 48 How students handle 41 20 file operations 0 10/1 10/2 11/1 11/2 12/2 13/1 13/2 Week/Assignment 100 % of submissions 80 71 73 60 54 40 23 22 How they handle 20 5 10 8 exceptions 0 10/2 11/1 11/2 12/2 13/1 13/2 13/3 14/2 Week/Assignment
  • 21. MAKING MODELS 100 90 80 58 63 48 62 67 67 % - of students 70 60 46 48 49 52 50 40 30 20 10 How students learned 0 While For Functions Exceptions Files Threshold p= 0.05 Theshold p = 0.1 Comparison of two different courses
  • 22. USING VIRTUAL LEARNING ENVIRONMENT  We used Viope virtual learning environment (VLE) to collect student submissions. www.viope.com  3732 source codes and 9420 errors  VLE also provided additional services:  Submission validation: the source code worked as intended (input/output matching)  Hinting service: “First aid” service to help students in a need of assistance.  Plagiarism detection: similarity testing with prior submissions.  Student statistics: teachers could observe how much time students had used, what kind of errors they had encountered, in which time of the week/day they are actively working etc…
  • 23. VISUAL TOOLS, KILPPARI  Visualization tool to assist teaching  Not only tool, also an API exercise for students import control import visualization control.MyCommands = ["square"] def Parser(command): if command == "square": for i in range(0,4): visualization.TurnLeft() for j in range(0,2): visualization.TakeStep() return command else: return "Invalid command:"+command
  • 24. ROBOT TOOLS  Python proved to be an excellent platform to control a small robot.  Kit build, gives students some idea on how to work “outside the grey box”  Related to the Karel the Robot (Guido van Robot) concept import serial portti = serial.Serial(3) portti.write(b"1c") portti.close() …. And there she goes!
  • 25. WHAT WE LEARNED ABOUT STUDENTS?  Students work at night.  VLE system is needed, as students tend to work at all hours  Also, automation to do basic sanity checks on student submissions  Nobody does anything during the weekends.  Some people just don’t get programming (over 150h spent on exercises of 14 week course)  No common sense; students use brute force to get the results they need.  Engineering students do not like visualization tools  ”Toys for elementary school”  Robots are cool.  Recording the lectures and putting them to web is really easy task to add.
  • 26. SO WHAT DID WE LEARN IN GENERAL?  Python was definitely the right choice.  Visualization tools divide opinions, but for truly introductory level they can be successful.  Python syntax makes it easy to model students with Bayesian models  Same content, different outcomes  Predict learning, easy to collect topics that should be revisited  Steering hardware with the software should be taken more into the course syllabus (motivational reasons).  Course book is a must!  Not a large 1000-page 200 USD brick that explains everything  Cheap (free?) manual that covers all of the course topics  IDLE was really all that was needed.
  • 27. CURRENT WORK  Immigration to Python 3  More open-source material to allow self-study in Python topics  Introduction to Python-wiki, by University of Oulu  Viope develops the Python web-course to cover new markets in Africa and Asia.
  • 28. Jussi Kasurinen, D.Sc. (SE) QUESTIONS? Lappeenranta University of Technology ...Or drop me an email at jussi.kasurinen@lut.fi