Sie sind auf Seite 1von 5

www.jitae.

orgJournalofInformationTechnologyandApplicationinEducationVolume4,2015
doi:10.14355/jitae.2015.04.008

ComputationalThinkingGuided
ProgrammingTrainingforOverseaStudents
withDiverseComputerLiteracySkills
CongCui1,UalikhanDossetov2,SongjieWei3
DivisionofInformationizationConstructionandManagement,2,3SchoolofComputerScienceandEngineering

NanjingUniversityofScienceandTechnology,Nanjing210094,China
*1

cuicong@njust.edu.cn;2ualikhan@njust.edu.cn;3swei@njust.edu.cn

Abstract
Introductiontoprogramingisnotonlyanacademiccourse.Itservesasaprerequisitetorelatedcoursesincomputerscience.
Coding in correct language grammar and syntax is only one part of a successful programing process, and we should never
neglecttheunderlyingproblemsolvingtaskwhenprograming.Teachingprogramingisespeciallychallengingtostudentswith
diverse computer literacy and even different education and learning culture. In this paper we outline the challenges when
teachinganundergraduateclassofmixedoverseastudents.Wepresentanewdesignofprogramingcourseleveragingmoreon
handson sessions with programming exercises, context and project. We help students go through programming process as
interpreting and solvingproblems in computer context. Students after the class will achievenot only satisfying programing
capability,butproblemsolvingskill,andenthusiasmandconfidenceinfurtherstudyincomputersciencemajor.
Keywords
ComputationalThinking;ProgrammingCourse;OverseaStudents

Introduction
Many course syllabuses and teaching methodologies have been developed for programming education to
undergraduate students[2, 3, 6, 8]. Many expect students with some quantity of prior computer experience and
knowledge.Someteachstudentsthecodingtechniquesbytreatingcomputerprogrammingasmerelyaprocessof
solving problems with computer aid. In 2014fall,Nanjing University ofScience and Technology (NUST) hadits
firstclassofoverseastudentsenrolledintheSoftwareEngineeringprogram.Thesestudents,fromAsian,European
and African countries, have diverse prior education levels, and with different computer usingexperience. Some
joinedthisprogramonlybecauseoftheavailablefinancialsponsorships.Therefore,theComputerScienceSchool
at NUST decided to build a new Introduction to Computer Science and Programming course, to introduce to
studentsthefundamentalsincomputerliteracy,topresenttheprincipleofcomputation,andtoteachstudentsto
analyze and solve problems within the context of computer science. The course migratesthe oversea firstyear
undergraduates from computer amateurs to compute professional candidates, and teaches them how to think
computationally[10].
We present the design principles and syllabus of this new computer programming course tailored for oversea
undergraduatestudentswithdivercomputerliteracyandeducationlevels.Insteadoffocusingonlyonthesyntax
andsemanticsofaprogramminglanguage,weadaptthecomputationalthinkingmethodintheteachingprocessto
help students gain general skills in analyzing and solving problems with appropriate abstraction and
decomposition, where the programing language itself is just a tool to format and visualize the process and to
expressthesolution.
The new course wasdeliveredduring the 20142015 academic year for a mixed international class of 31
undergraduatestudents.Fig.1showsthestudentdistributionbynationalities.Theauthorsofthispaperactedas
thelecturer,thelabexercisetutor,andtheteachingassistantduringthecourse,andhaveobtainedrichfirsthand
experienceondesigninganddeliveringacomputerandprogrammingintroductioncoursetargetinginternational

56

JournalofInformationTechnologyandApplicationinEducationVolume4,2015www.jitae.org

undergraduatestudentswithdiverseorevennocomputerliteracyskills.

FIG.1DISTRIBUTIONOFSTUDENTNATIONALITIES

Challenges
Table 1 shows a statistics on class with31 students. All are recipients ofsome scholarships from the Chinese
government, which impliestheir competitiveness on English language skill and highschool education records
amongthecontemporariesintheirowncountries.Withthefastprevailingofinformationtechnologyproductsand
services,andespeciallysmartphonebasedmobileinternetaccess,moststudentsarefamiliarwithcomputers,and
havebeenfrequentlyusingInternet,eitheronPCsorsmartphones.However,manystilldonothaveclearimage
about what a program looks like. Only five studentsonce tried to compose or modify program source code, and
hadexperiencetocompileandrunit.
TABLE1SURVEYOFSTUDENTSCOMPUTERUSINGEXPERIENCEANDENGLISHLANGUAGESKILL(TOTALLY31STUDENTS)

ComputerUsing

18proficient,7familiar,5limited,1none

InternetUsing

22frequentusers,9occasionally

ProgrammingExperience

26none,4amateurs(C,Pascal,Basic),1experienced(Fortran)

PrecollegeEducation

28fromhighschools,2fromtechnicalschools,1fromcommunitycollege

EnglishLanguage

16withgoodEnglishskills(speaking,listening,reading),12fair,3limited

LimitedEnglishskillisthestudentsanotherweakness.NoneofthemarenativeEnglishspeakers.Halfoftheclass
hasdifficulties,oratleasthasnotenoughpatiencetoreadEnglishtextbooksorlectureslides.
So we decided to rely less on lectures or textbooks, but to provide more samples and handon exercises. We
utilizedtheireasyaccesstoInternetresource,andreferredthemtovariousonlinedocumentsanddemos.
Course Design Principles
Wefirstidentifyingalltheessentialknowledgeandskillsthatweexpectstudentstomaster.Wekeepreminding
ourselvesthiscourse,asthefirstprogramingcourseincurriculum,makesmoresensetoeducatestudentsonwhat
computer programs can and cannot do, and how the cando parts are really done with clear, rational and
repeatablesteps.Withthefollowingcourseobjectives,weusedthebackwardprocessdesigningofthecourse[9].
TrainingStudentsonComputationThinkingMethod
Computational thinking is not thinking like a computer, but rather as a computer professional withprofound
understanding of the fundamental concepts, algorithms and procedures in computer science, and being able to
applytheseknowledgeinanalyzingandsolvingcomplexproblemsinpractice.WeexpectstudentstolearnC/C++

57

www.jitae.orgJournalofInformationTechnologyandApplicationinEducationVolume4,2015

not just as programming languages to interact with computation machines, but as handy tools to abstract and
decomposecomplextasksandtodiscoveranddescribesolutions.Weusethecourseprocesstomakestudentsfeel
andadapttotheflexibilityofusingprogramlanguagetoexpresstheirimaginationandcreativities.
FamiliarizingStudentswithProgrammingProcess
Many programming beginners frustrated at compiling their source code and tracking runtime errors by just
keepingtochangecodeandtryagainwithoutclearthoughandtarget.Justlikewritingsourcecodeismorethan
typingonkeyboard,compilingandrunningaprogramisalotmorebeyondclickingrelevantIDEbuttons.Beforea
studenttypesinanyhelloworldprogram,weteachhim/herwithsourcecodereadythere,whatarenextstepsto
make it run and assure its correctness. We think for beginners, compiling precedes coding, and debugging
precedesdesigning.
TeachingStudentsforBasicProgramingSkills
PrograminginC/C++isnotonlytheprimarysectionofthecoursecontent,butalsotheindispensablesupportand
context of implementing other course objectives. We expect students after this course to be able to write C/C++
programstocontrolthebehaviorofacomputerfollowingstepsinaproblemsolution,i.e.programimplementation
ofanalgorithm.
MotivatingStudentsinComputerScienceStudy
As Dr. Knuth once mentioned when describing the art of computer programming, programming should be
feedbacktoprogrammerswithbothintellectualandemotionalsatisfaction[4].Thelatterhasespeciallysignificant
impactonfreshprogrammers,thosewhoarefrequentlytorturedbysimplebutnonnegligiblecodeerrorsandare
easily discouraged. Having students of different cultural backgrounds with various endurance and tolerance on
failure, we realize that our C/C++ course, as their first touch with computer programming, should make the
studentsfeelinspiredandinterestinthefieldofcomputerscience.Thecourseanditsinstructorsshouldneveract
likeajudgeofstudentstalentinprogramming,butascoachesandcheerleaderstoguidestudentssteppinginto
programmingworldwithhopeandconfidence.
Course Syllabus and Delivery
ThecourseisdesignedwithtwosessionsdeliveredthroughthefirstyearforSoftwareEngineeringundergraduate
students.Infallsemester,thereare48hourlectures,whichfocusonthefundamentalsoftheC/C++programming
languagesandtheDevC++integrateddevelopmentenvironment(IDE).C/C++languageisintroducedasatoolto
organize data structures and to express computation algorithms. Basic computer data structures such as arrays,
linked lists, binary trees are introduced as case studies. And the popular computer algorithms for sorting and
searching are discussed. While students have chance to thoroughly study the relevant topics in later course,
wehopetoequipthemenoughconceptsandmethodsforthenextstageprogrammingpractices.
In the second sessionof 6 weeks in spring, students utilize the learned C/C++ language to solve problems
andcompleteacourseproject.TheinstructorandTAgathertheclasstwiceperweek,spendingtwoafternoonsin
computerlabs.First,aprogrammingproblemisannouncedwithrequirementsandresources.Thenstudentswork
oncomputerstodesign,codeandvalidatetheirsolutions,withguidanceandassistancefromtheTA.Attheendof
thesecondweeklygather,theinstructorgradesthesolutions,andchoosesonetodemonstrateanddiscusswiththe
wholeclass.Thechosenoneeitherholdsmeritsonitsdesignandimplementation,orshowstypicalmistakes.
Therightwayoflearningprogrammingistowriteprograms.Andthegoodtimetounderstandprogramexecution
is debugging. We design and organize the followings programing problems and challenges to give students
sufficientopportunitiestopracticetheirprogrammingskills,andtotraintheircomputationthinkingcapabilityin
realistic problem solving process. The first four exercises areassigned one in each week. The online contest is
announcedatthebeginningofthesecondsession.Andthecoursefinalprojectisannouncedinthelastweek.We
point student to online documents and manuals as references about C/C++ language and standard libraries,

58

JournalofInformationTechnologyandApplicationinEducationVolume4,2015www.jitae.org

frequentlyusedalgorithmsanddatastructures,suchascplusplus.com,andNISTdatastructuredictionary[1,7].

Usingthecompileranddebugger.ThisexercisefamiliarizesstudentswiththeBloodshedDevC++
IDE. The instructor provides several files of source code with either compilation errors, runtime errors, or
algorithm errors. Students are asked to use the IDE tools and functionalities such as building, setting
breakpoints,tracking,profilingtoidentifyandfixtheerrors.

Acalculatorsupportingarithmeticoperationsoftwointegersofanysize.Studentsarerequiredto
write a program to read in two long integers and an operator (addition, subtraction, multiplication, and
division)inbetween.Theprogramcalculatestheanswerandoutput.Thisexercisehighlightsseveraltechniques
in programing, the linked list data structure, the dynamic memory allocation, and the stringnumber
conversion.

Sudoku generator and solver. Students are asked to design and implement a Sudoku puzzle
generator,validatorandsolver.Thepuzzlegeneratorcanoutputanewproblemintoafile.TheValidatorreads
asolvedpuzzlefromafileandvalidatesitscorrectness.Thesolverreadsapuzzleproblemfileandsearchits
solution. We originally want to choose some game that can be easily understood by people from different
cultures, and a game without too much mathematics or strategy involved. With a quick survey, the Sudoku
turnsouttobepopularinallthecountries.

Btree implementation. We provide students some preliminary training on organizing computer


data with structures, and pick Btree as an example to practice,which is complex enough for implementation
withitsoperationonsplittingandcombiningnodestokeepbalanced.TheBtreedatastructureisalsouseful
for the followup course project. Students may search online to download and reuse source code, which is
acceptable,becausewebelievecodereuseisagoodpracticeinsoftwareengineering.Encouragingandtraining
studentstosearch,understandandreuseexistingcodeisalsoadesignpurposeforthisexercise.

LeetCode[5]isawebsiteforpreparingandpracticingprogramminginterviews.Ithas200questions
spanningmanyaspectsincomputerprogramming.Allareratedbasedondifficulties.Userscantypeinsource
code and submit for testing online. LeetCode makes a good venue for our students to learn programming,
testing and debugging, with realistic industryinterview used programming problems. The browserbased
platform is easily accessible. Some of our students even worked on problems on smartphones in their spare
time.

Coursefinalproject.Inthefinalproject,studentscanworkingroupof2or3peopletodesignand
implementadatabasesystem.Thedatabasewillstoredatainfiles,supportrecordinsertion,deletionandquery.
Thesubmittedprojectisevaluatedbasedonitscorrectness,functionalities,andperformance.
The course final gradesums up the programmingexercises(40%), the onlineLeetCodebased contest (20%),and
the final project (40%). Table 2 showsthe grade distribution for the first two and the cumulated final. Grading
symbols are converted from the 100pointbased scores, interpreted as Excellent, Good, Passing, and
Failingrespectively.
TABLE2GRADEDISTRIBUTIONIN20142015ACADEMICYEAR
GradeScale

CourseExercises

LeetCodeChallenge

FinalCourseGrades

A(86100)

22%

28%

19%

B(7685)

35%

43%

55%

C(6075)

40%

26%

23%

F(<60)

3%

3%

3%

Duringthecourse,wesawaslowbutsteadyprogressofstudentsprogrammingskill.Whileonly57%didGood
workintheprogrammingexercises,whichwereconductedinthefirst4weeks,over71%didwellintheLeetCode

59

www.jitae.orgJournalofInformationTechnologyandApplicationinEducationVolume4,2015

based programing contest, and 74% received a good final grade of B and above. A good grade on LeetCode
challenge implies a students continuous, diligent and fruitful working on LeedCode problem solving, which
requires not only spending time online, but thinking in computation, and efficient coding and debugging
capability. Students finished their course design project as an integrated evaluation and demonstration of the
students knowledge and abilities to utilize computer programming tools to analyze and solve problems. We
gradedeachstudentsworkbasedonthesubmittedprojectdesignreportwhichdemonstrateshowthestudentwill
format and solve the problem in computational thinking, the project source code which measures the students
codingandcodeorganizationskill,andthesoftwarefunctionalitiesandperformancewhichreflecthowstudents
utilized the learned knowledge in practice. All except one student implemented the required functionalities and
submitted, and many provided extra functionalities for user convenience, or built the system with better data
structure than discussed in class for performance. These students have gone beyond of writing compilable and
executable code, and using computer program to express their understanding on problems, to implement and
validatetheirinnovativesolutions.
Conclusion
WepresentourdesignofanewC/C++programmingcourseadoptingcomputationalthinkingforoverseastudents
with diversecomputer usingexperiences and cultural backgrounds. The course inspires students in computer
science,tointerestthemincomputersystemandarchitecture,andtostrengthenthemwithnecessaryprograming
skillsandfeeling.
With our last class of students moving to their second year of study, we are looking forward to more feedbacks
from them and their instructors on how this course serves as a prerequisite of other courses in software
engineeringprogram,andhowwecanbetterpreparethesefollowupcomputercoursesforstudents.
References
[1]

C++ResourcesNetwork,http://www.cplusplus.com/

[2]

Cortina,Thomas.AnIntroductiontoComputerScienceforNonmajorsUsingPrinciplesofComputation.ACMSIGCSE
Conference,2007

[3]

Husain, Moula, and Tarannum, Neha, et al. Teaching Programming Course Elective: A New Teaching and Learning
Experience.IEEEMITEConference,2013

[4]

Knuth,Donald.ComputerProgrammingasAnArt.CACM,Vol17,No12.,1974

[5]

LeetCodeOnlineJudge.http://leetcode.com

[6]

Lu,Yan.TeachingObjectorientedProgrammingwithGames.ITNGConference,2009

[7]

NIST.DictionaryofAlgorithmsandDataStructures.http://xlinux.nist.gov/dads/

[8]

Papaspyrou, Nikolaos, and Zachos, Stathis. Teaching Programming through Problem Solving: the Role of the
ProgrammingLanguage.FedCSISConference,2013

[9]

Wiggins,Grant,andMcTighe,Jay,UnderstandingbyDesign.Supervision&CurriculumDevelopment,1998

[10] Wing,Jeannette.ComputationalThinking.CACM,Volume49,No.3.,2006

60