10 Best Computer Science Courses to Take in 2022
文章推薦指數: 80 %
Launched on edX in 2012, CS50 is the computer science course on the ... The course is ten weeks long, plus an open-ended final project that ... Search Submityoursearchquery Forum Donate ElhamNazif Areyoulookingforthebestintroductionstocomputerscience?I’verankedthetopcoursesavailableonline,followingarobustmethodology.Andthey'reallfreetoaudit.Youcanreadaboutitbelow.Butifyou’reinahurry,herearemytoppicks.Clickononetoskiptothecoursedetails: Rank&Course Workload InBrief 1.CS50'sIntrotoComputerScience(Harvard) 100–200hours Comprehensive,superhigh-qualitysurveyofCS. 2.ComputationalThinkingforProblemSolving(Penn) 70hours Gettingtheproblem-solvingmindsetandmethods. 3.IntrotoComputerScienceandProgrammingUsingPython(MIT) 80–140hours ComprehensiveCSsurveythroughthelensofPython. 4.PrinciplesofComputing(Rice) 40hours Hands-onoverviewofCSfundamentals,likeprobabilities. 5.ComputerScience101(Stanford) 36hours SurveyofmajorCStopics,includingnetworking. 6.HowComputersWorkfromCoursera(UoL) 40hours Bottomupviewofcomputerfunctioning. 7.CS50'sUnderstandingTechnology(Harvard) 36hours Techbasics,ifyouaren’treadyforthemainCS50. 8.IntrotoTheoreticalComputerScience(Udacity) 25hours Complexityandcomputabilitytheory. 9.MathematicsforComputerScience(UoL) 40hours ComprehensivemathoverviewforCS. 10.MathematicsforComputerScience(UniversityofHull) 9hours Greatmathintroifyou’restartingfromscratch. WhatisComputerScience?Thedefinitionofcomputerscienceisalmostasbroadasthedefinitionofphysics.So,tosaythatcomputerscienceisthestudyofcomputersandcomputingconceptsisjustas'useful'assayingthatphysicsisthestudyofnatureanditsphenomena.Instead,I’lltellyouthemainsubfieldsofcomputersciencethatmostuniversitiesincludeintheirsyllabus.Computerarchitectureandorganizationnaïvelyponders:‘HowdoIdesignacomputer?’Programmingstepsinandquestions:‘Buthowwillthecomputerunderstandthehuman?’Operatingsystemsinterjects:‘Holdon,howshouldthehumaninteractwiththecomputer?’Datastructuresandalgorithmschirpsin:‘Afteryou'vefiguredthatout,howdowestoreandcomputedataefficiently?’Networkingandcommunicationwaitspolitelybeforeinquiring:‘Sothat’sallcool,buthowcanwemakecomputerstalktoeachother?’Yougetthegist.I’msureyou’vehadoneoftheseintriguingthoughtspopupinyourmindbefore.Luckily,thesearethequestionsthatcomputersciencetriestoanswer.Bystudyingcomputerscience,youcanbecomeabetterprogrammer.Justasaveterinarianislikelytounderstandanimalsbetterthantheaveragepetowner,bystudyingcomputerscience,youcangetabettergraspofthefeatures,abilities,andlimitationsoftheseawesomecode-runningmachinesthatwecall‘computers’.CourseRankingMethodologyIfollowedathree-stepprocesstobuildthisranking:First,letmeintroducemyself.I’mpartofClassCentral,theleadingsearchengineforonlinecourses.I(@elham)builtthisrankingincollaborationwithmyfriendandcolleague@manoel,followingthesameapproachweusedwithsomesuccessinourpreviousrankingsofthebestPythoncoursesandbestmachinelearningcourses.Atthispoint,I’dsayit’saprettyrobustmethod.Westartedbuildingthisrankingbylookingatourdatabaseof50K+onlinecourses.Wewereinterestedinthingslikeratings,reviews,andcoursebookmarks.Thisallowedustomakeaninitialselection.Sothisphasewaspurelydata-driven.Thistentativefirststeprapidlyhelpedsurfacesomeofthebestoptionsavailableoutthere.Wordofmouthisveryeffectiveinonlinelearning.Goodcoursesgetnoticed.Andtheverybestgatheralotofattention,andravingreviews.Thatsaid,reviewsdon’talwaystellthewholestory.Infact,somecoursesaresogoodatgrabbingthespotlightearlyonthatotherexcellentresourcescangounnoticed.Sothenextstepwastobringourpersonalknowledgeofonlineeducationintothemix.Second,weusedourexperienceasonlinelearnerstoevaluateeachofourinitialpicks.Webothcomefromcomputersciencebackgroundsandareprolificonlinelearners,havingcompletedabout45MOOCsbetweenus.Additionally,Manoelhasanonlinebachelor’sincomputerscience,andIamcurrentlycompletingmyfoundationincomputerscience.ManoelgatheredthecourseswhileIwrotethearticleyou’recurrentlyreading.Throughoutthisprocess,webouncedideasoffeachotherandmadeiterativeimprovementstotherankinguntilwewerebothsatisfiedwiththeendresult.Third,duringourresearch,wecameacrosscoursesthatfeltwell-madebutweren’twell-known.Ifweadoptedapurelydata-centricapproach,wewouldhavetoleavethosecoursesoutoftheranking,ifonlybecausetheyhadfewerenrollmentsandratings.Butno.Thisrankingisdeliberatelyopinionatedandholistic.Whenwefeltconfidentthatacoursewasworthincluding,evenwhenthecoursemightnotyethavequiteasmanyreviewsassomeofitscompetitors,wewentwithourgutandincludedit.Wealsospicedupthelistbyincludingawidevarietyofcomputersciencecoursesthatwillhopefullycatertothediverserangeoflearners,whetheryou’reatruebeginnerorsomeonewithsomefoundationsincomputerscience,oraninterestinspecifictopicslikemath.Aftergoingthroughthisprocess—combiningClassCentraldata,ourexperienceaslifelonglearners,andlotsofediting—wearrivedatourfinalranking.Sofar,we’vespentmorethan10hoursbuildingthisranking,andweintendtocontinueupdatingitinthefuture.CourseRankingStatisticsHerearesomeaggregatestatsabouttheranking:Intotal,thecoursesinthisrankingaccumulatedover5millionenrollmentswith2courseshavingover1millionenrollmentseach.Themostpopularcourseinthelisthas3.5millionenrollments.Allofthecoursesinthisrankingareeitherentirelyfree,orfreetoaudit.With4courseseach,edXandCourseraaretiedforthemostrepresentedproviderinthisranking.Around480kpeoplearefollowingComputerScienceCoursesonClassCentral.Withoutfurtherado,let’sgothroughthetoppicks.1.CS50'sIntroductiontoComputerScience(HarvardUniversity)CourseinstructorProf.MalanwithhisstudentsMyfirstpickhastobeCS50'sIntroductiontoComputerScience,offeredbyHarvardUniversityonedX.LaunchedonedXin2012,CS50isthecomputersciencecourseontheinternet.Itisfamousforitssplendidproductionqualityanditsyearlycurriculumupdates.Itprovidesasuccinctbutcomprehensiveoverviewofwhatcomputerscienceisallabout.Whetheryouareanewbiewhohasneverheardof‘HelloWorld!’,oraprogrammerwhoknowsathingortwoaboutcomputers,you’llcomeoutofthiscoursehavinglearnedsomethingnew.OneThingtoNoteAlthoughthecourseexercisescomeintwoversions,easyandchallenging,Ifoundthateventheeasyexercisescanbeabittricky.Ifyouknownothingaboutprogramming,I’drecommendyoufindsomeonetostudythiscoursewith.Fortunately,CS50hasoneofthelargestandmostactivecoursecommunitiesonline:checktheirDiscord.Orifyou’relookingforashorter,morepracticalcourse,youmightwanttohavealookatmyPythonranking,whichincludessomegentleron-rampsintotheworldofprogramming.TheInstructorWecan'tdiscussCS50withoutbringingupDavidJ.Malan,theHarvardprofessorthatteachesthecourse.Rarelyhasaninstructorbeensoinstrumentaltothesuccessofacourse.Beyondbeinganexcellenteducator,Prof.Malanisatrueentertainer,withnear-perfectdelivery.Andwhenyou’retacklinganacademiccoursethatmaytakeyoudozensofhourstocomplete,havinganinstructorcapableofcapturingthelearner’sattentionmakesahugedifference.Soifdespiteasinceredesiretolearn,youfindyourselffallingasleepwhiletakingonlinecourses,thismightjustbethecourseforyou.Prof.Malan’senergyiscontagious!WhatYou’llLearnThecoursebeginswiththepremisethatcomputerscienceis,atitscore,problemsolving.Itintroducesyoutobinary,thefundamentallanguageofcomputers,andexplainshowsequencesof1sand0scansomehowrepresenttext,images,videos,andevensounds.You’lllearnthatalgorithmsarestep-by-stepinstructionsdesignedtosolveaproblem.Themostcommontypeofalgorithmsyou’lldealwiththroughoutthecoursearealgorithmsforsortingandsearching,likebubblesort,mergesort,andbinarysearch.Youmaywonder,‘What’sthepointofhavingmanydifferentalgorithmsiftheyalldothesamething?’.Thisiswhenyou’lllearnaboutmeasuringtheefficiencyofanalgorithmwithBigOnotation.Thefirstprogramminglanguagethecourseteachesisthebeginner-friendlylanguageScratch.Throughblock-basedcoding,you'lluseScratchtoillustratefundamentalprogrammingconceptslikefunctions,conditionalstatements,booleanexpressions,loops,andvariables.Laterinthecourse,you’llnoticethatthesefundamentalconceptskeepcominguptimeandagain,sincetheycanbefoundinprettymucheveryprogramminglanguagethatCS50willteachyou.Thecoursethenremovesyourtrainingwheelsanddragsyoudownintothedepthsoflow-levelprogramminglanguages.By“low-level”,Idon’tmean“lessvaluable”.Incomputerscience,low-levelprogramminglanguagesarelanguagesthatareclosetomachinecode:theclosertheyaretomachinecode,the“lower”theyare.Assemblylanguageisascloseaswegettobinary,andthecoursewillbrieflydiscussit.Butourfirstdeepdiveintotraditionalprogramming(writinglinesofcodeinsteadofarrangingcolorfulblockslikewithScratch)willbewithC,alow-levelprogramminglanguagewhereyou'llmanagememorybyhandandimplementyourfirstdatastructures.You’lllearnthatcomputersstoredatainsequencesoflocationsinmemory,andhowcomputerscanlocateandaccessdatawithaddressesandpointers.You’llalsolearnaboutthedifferentwayswecancreateandstorelistsofvalues,likearrays,linkedlists,andtrees.You’llcomparetheadvantagesanddisadvantagesofeachdatastructure.Forexample,hashtablescanbeaccessedinconstanttime,butrequiremitigatingtheriskofdatacollision.You’llthenbebroughtbackuptothesurfacetowards“higher-level”programming,whereyou’llbeabletocomfortablybreatheasyoubeginworkingwithPython,andcontinuejumpingfromtopictotopic.You’llexploreSQL,theprogramminglanguageofmanydatabases.ThefinalweeksofthecourseculminateinyoubuildinganddesigninganinteractivewebsitewithHTML,CSS,JavaScript,andaPythonframeworkcalledFlask.HowYou’llLearnThecourseistenweekslong,plusanopen-endedfinalprojectthatmighttakeanextraweek(ormore,ifyouwanttoworkonsomethingreallyambitious).Thecourseisrecordedannuallyon-campusatHarvardbeforebeinglaunchedonlinethefollowingSpring.Whiletherecordingisongoing,youmightbeabletojoinvialivestreamwithahundredotherlearners,orifyoulivenearcampus,evenattendinperson—thoughthepandemicmightprecludethisfortheforeseeablefuture.Otherwise,you’llhaveaccesstoon-demandrecordingsonedXorviaHarvardOCW.Regardingassessments,you’llcompletetenproblemsets,eightlabs,andafinalend-of-courseprojectthatyou’llhavetodesignandcomeupwithyourselforwithateam.You’llbeabletocodeandsubmittheseviaaconvenientin-browserVSCode-basededitor. Institution HarvardUniversity Provider edX Instructors DavidJ.Malan,BrianYu Level Beginner Workload 100–200hourstotal Enrollments 3.4M Certificate FreeandPaid(seebelow) CS50LineupAlotofpeoplehaveheardaboutCS50’sIntroductiontoComputerScience,butnotmanyrealizethatthereare10othercoursesundertheCS50brand.Afewfollow-upcoursesworthmentioningare:IntroductiontoArtificialIntelligencewithPythonIntroductiontoGameDevelopmentWebProgrammingwithPythonandJavaScriptWhat’sevenbetter:manyofthesecoursesofferafreecertificate.Ifyou’dliketoknowmoreabouttheCS50courses,andhowtogetafreecertificate,youcanreadManoel'sCS50guide.FunFactsThecourseinstructorDavidJ.MalanhasbeenteachingCS50for15years,firston-campusatHarvard,andonedXsince2012.CS50hasbeenbookmarkedaround30ktimesandhasover100reviewsonClassCentral.Everyyear,CS50organizesPuzzleDay,afriendlyproblem-solvingcompetitionwhereyou’llhavetheopportunitytocollaboratewithlearnersworldwide.CS50isapartofbothourlistofmost-popularcoursesofalltimeandbestfreecoursesofalltime.DavidJ.MalanwasthefounderandchairmanofDiskaster,aharddriveandmemorycarddatarecoveryfirm.Oneoftheexercisesinthecourseisanodtohispreviouswork.CS50isthelongestcourseonthisranking,owingtoitscomprehensiveness.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.2.ComputationalThinkingforProblemSolving(UniversityofPennsylvania)Thecourseinstructors,SusanDavidsonandChrisMurphyMysecondpickwouldbeComputationalThinkingforProblemSolvingfromtheUniversityofPennsylvaniaonCoursera.Thiscoursefocusesontheskillsunderlyingcomputerscience — computationalthinking.Computationalthinkingistheprocessofbreakingaproblemintoparts,andthencomingupwitharesolutionmethodthatcanbecarriedoutbyacomputer.Onceyou’veembracedcomputationalthinking,you’llbeintherightmindsettotackleadditionalcomputersciencecourses.Soyoucouldseethiscourseasafoundationbeforethefoundation.Thatsaid,ifyourinterestliesinproblemsolvingperseratherthanCSasawhole,thiscourseshouldalsobeagreatfit.Youdonotneedanypriorexperiencewithcomputerscienceorprogrammingtotakethiscourse,althoughsomebasichighschoolmathematicswouldbeuseful.WhatYou’llLearnThecoursecoversfourmaintopics:computationalthinking,algorithms,computerarchitecture,andPython.First,thecourseoutlinesthefourpillarsofcomputationalthinking.You’llbeginwithdecomposition,breakingdownacomplexproblemintosmaller,simplerproblems.Thenthroughpatternrecognition,you’llcomparetheproblemtoothersimilarproblemsthathavebeensolvedpreviously.Afterwards,duringdatarepresentationandabstraction,you’llsimplifytheproblemevenmorebyidentifyingwhatcharacteristicsoftheproblemareimportantandfilteringoutthosethatarenot.Thelastpillarofcomputationalthinking,algorithms,formsthesecondsectionofthecourse.Thecoursedefinesalgorithmsasasetofstep-by-stepinstructionstosolveaproblem.Withalgorithms,youcanteachthecomputerhowtosolveproblemswithoutexplicitlytellingthempreciselyhow.Instead,youralgorithmwillbeabletohandleanumberofdifferentcases,aslongasthesesatisfysomepreconditions.You’llexploreavarietyofalgorithms,likelinearandbinarysearch.You’lllearnhowtorepresentalgorithmswithflowcharts,analyzethecomplexityofalgorithms(BigO),andcalculatethenumberofpossiblesolutionstoanoptimizationproblem.Lastly,you’llcomparethebenefitsandlimitationsofcommonalgorithmicapproachestoproblemsolving.Thethirdpartofthecoursegivesabriefhistoryofcomputers,beforesettlingonthecomputerarchitectureusedbymoderncomputers—theVonNeumannArchitecture. Itconsistsofthreefundamentalunits:thememory,CPU,andI/O.You’lllearnhowdataandinstructionsarestoredandaccessedincomputersasbitsandbytes,andalsohowexecutingcodeamountstomovingpiecesofdatainmemoryandoperatingonitintheCPU.Inthefourthandfinalsection,thecoursewillinstructyouonthebasicsofPythonprogramming.You’llexploreiterations,classes,anddebugging.Andyou’llendthecoursebycodingyourownPythonprogram,whereyou’llgettoimplementthealgorithmsyoulearnedpreviouslyintocode.HowYou’llLearnThecourseis4weekslong,witheachweekhavingabout18hoursofcoursematerial.You’lllearnprimarilyfromvideolectures,andaftereachvideothere’llbeashortquiztotestyourrecall.Thereissupplementarymaterialavailableonmath,forthosenot-so-confidentintheirmathematicalabilities.Attheendofeachweek,you’llbepresentedwithacasestudywhereyou’llseeexamplesofcomputationalthinkingusedtosolvereal-lifeproblems.Afterwards,you’llcompleteaprojectwhereyou’llapplywhatyou’velearned.Donotethattheassessmentsinthiscourseareforverifiedlearners. Institution UniversityofPennsylvania Provider Coursera Instructors SusanDavidsonandChrisMurphy Level Beginner Workload 70hourstotal Enrollments 74K Rating 4.7/5.0(1K) Certificate Paid FunFactsThiscourseisendorsedbyGoogle,whichdecidedtomakeitpartofitsDigitalGarage,acollectionofcoursesandresourcesforlearnerswantingtogaintechskills.Penn’sProfSusanDavidson,thecourseinstructor,wasnamedaFellowoftheAmericanAssociationfortheAdvancementofSciencein2021.Prof.DavidsonalsoteachessomeofthecoursesofPenn’sMasterofComputerandInformationTechnology(MCIT),whichisofferedonlinethroughCoursera.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.3.IntroductiontoComputerScienceandProgrammingUsingPython(MassachusettsInstituteofTechnology)Prof.EricGrimson,courseinstructorMythirdpickforthebestcomputersciencecourseisIntroductiontoComputerScienceandProgrammingUsingPython,offeredbyMITonedX.ThiscourseapproachesthefieldofcomputerscienceandprogrammingthroughPython.Thecoursefocusesonbreadthratherthandepth,givingstudentsbackgroundknowledgeonthenumerousapplicationsofcomputation.Sothiscourseissimilartoourfirstpickinthatit’sasurveycourse:itcoversalot,butnotingreatdetail.Butit’sdissimilarinthatitfocusesentirelyononeprogramminglanguage,Python,whileHarvard’scourseinvolvesmultiplelanguages.Dependingonyourgoals,thisfocusonPythoncouldbeseenasapositiveoranegative.Forwhatit’sworth,IbelievePythonisanexcellentfirstprogramminglanguage.Headsup!ThiscoursetriestomirrortheMITon-campusexperience,sodon’texpectittobeacakewalk.Youwon’tneedanypriorexperiencewithcomputerscienceorprogrammingtotakeit,butyou’llneedabackgroundinhighschoolmathematics.WhatYou’llLearnThemaintopicsthecourseexploresarecomputationalthinking,datastructures,iterationandrecursion,decomposition,abstraction,andalgorithmsandcomplexity.You’llbegivenabriefintroductiontocomputationandcomputationalthinking.You’lllearnwhatcomputersare,howtheywork,andwhattheirlimitationsare.Byunderstandingthatcomputersonlyknowwhatyoutellthem(andwhattheycaninferfromwhatyoutellthem),you’llrealizethatinorderforthecomputertoaccomplishatask,theyneeda‘recipe’containingasequenceofinstructionstheyshouldfollow.Thisiswhatcomputerscientistscallanalgorithm.YourprogrammingjourneybeginsbylearningPythonanditsbasicsyntax.WithPython,you’llexploreconceptscommontomostprogramminglanguages.Theseincludevariables,conditionalstatements,andcontrolflows.Furthermore,you’llbeintroducedtofunctionsandtheroletheyplayindecomposition,abstraction,andrecursion,whichareconceptsfundamentaltoproblem-solvingincomputerscience.Bythen,youshouldbeabletocodesimpleprogramsthatcancomeupwithapproximatesolutionstodifficultmathequationsthroughaguess-and-checkmethod.Lastly,you’lllearnaboutthedifferentwayswecanrepresentinformationinPython,calleddatastructures.You’llworkwithlists,tuples,anddictionaries,andunderstandwhentouseonedatastructureoveranother.HowYou’llLearnThecourseis9weekslongwithanexpectedworkloadof14to16hourseachweek.Themainmodeoflearningisvideolectures,andthecourseincludesplentyofactivitiestoputyourhard-earnedskillsintopractice.You’llalsohaveaccesstoalearner’sforumwhereyoucandiscusswithfellowlearners.Thereare3problemsetscontainingchallengingcodingexercisesthatwillhelpyousolidifyyourknowledge.Ifyouareaverifiedlearner,you’llhavetocompleteatimedmid-termandfinalexaminordertoreceiveyourcertificate. Institution MassachusettsInstituteofTechnology Provider edX Instructors JohnGuttag,EricGrimson,AnaBell Level Intermediate Workload 80–140hourstotal Enrollments 1.5M Certificate Paid FunFactsThiscoursehasover18kbookmarksand120reviewsonClassCentral.Itisthefirstofatwo-courseXSeriesProgramonedX.ThesecondisIntroductiontoComputationalThinkingandDataScience,whichcouldmakeforagoodfollow-up.Oneoftheinstructors,ProfessorJohnGuttag,leadstheDataDrivenInferenceGroupatMIT’slegendaryComputerScienceandArtificialIntelligenceLaboratory(CSAIL).Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.4.PrinciplesofComputing(Part1)(RiceUniversity)Prof.ScottRixner,courseinstructorPrinciplesofComputing(Part1),byRiceUniversityonCoursera,ismyfourthpickforthebestcomputerscienceintroduction.Thecourseemphasizesdoingratherthanwatching,requiringyoutocompletemanycodingassignments.Thiscourseaimstohelpyoustepupyourprogrammingskillsbyteachingyoucomputationalproblemsolving,askillthatunderliescomputerscience,andthatwasalsothefocusofoursecondpick.Thiswillinvolvelearningimportantprogrammingpracticesanddevelopingamathematicalfoundationforproblemsolving.Totakethiscourse,you’llneedtobecomfortablewithwritingsmall(100+lines)programsinPython,aswellashavesomebackgroundinhighschoolmathematics.Sothisonedoesn’tstartfromscratch,andisthereforegearedtowardlearnersthatalsohavesomebasicsdown.Ifyou’relookingforaproblemsolvingcoursewithfewerprerequisites,youmightwanttohavealookatoursecondpick.WhatYou’llLearnThecourseincludesrefreshersonPython,codetesting,probabilityandrandomness,combinatorics,andfunctiongrowth.AfterabriefreviewofPython,thecoursewillexplainhowtobuildtests,andwhyhavingtestsforyourPythonprogramscanbeuseful.Manyprogrammersdislikeordon’tsimplybothertowritetestsfortheircode,butasoneoftheinstructorsexplains,it’sabestpracticeworthtreatingasanintegralpartoftheprogrammingprocess.Writingtestswillhelpyousavetimeandeffort,andservesasareusablesanitycheckthatyourprogramactuallydoeswhatit’ssupposedtodo.Foryourfirstmini-project,you’llrecreatethewell-knowngame2048inPython.Then,thecoursemovesontotheroleofprobabilityandrandomnessincomputerscience.You’lllearnhowtoidentifyunreasonableoutcomesinprobability,alongwithcalculatingtheexpectedvalueofmultipleoutcomes.Forexample,what’sthechancethatadiewouldrollsevensixesoutoftentosses?Andifthatweretohappen,towhatextentcouldweconcludethatthedieisweighted—thatis,thattherollswereunfair?You’llalsoseehowwecanusePythontosimulatetheprobabilityofoutcomes,avaluabletoolusedinstatisticalmodeling.Andforyoursecondmini-project,you’llworkwithprobabilitiestocreateanopponentthatyoucanfaceinagameofTic-Tac-Toe.Thecoursealsotouchesoncombinatorics,whichdealswithenumerations,permutations,andcombinations.You’llfigureouthowtocalculatethetotalnumberofwaysaneventcanplayout.Thishelpsgreatlyincalculatingthenumberofstepsanalgorithmwouldtake,therebyallowingyoutoestimatetherunningtimeofthealgorithm,andinturn,determineifthealgorithmwouldbeworthimplementing.Youcanseewhycombinatoricsplaysamajorroleinpasswordandcomputersecurity.Foryourthirdmini-project,you’llcodethefamiliardicegameYahtzee.Inthefinalpartofthecourse,you’llbetaughttheimportanceofcountinginsolvingcomplexproblems.Countinganswersthequestionofhowlonganalgorithmmighttaketorungivenatask.Anothernameforcountingyoumightbemorefamiliarwithis“timecomplexity”.You’llalsolearnabouthigher-orderfunctionsinPython,thatisfunctionsthattakeotherfunctionsasalgorithms,likethemapfunction.Inyourlastmini-project,you’llusetheseconceptstomakeyourownversionofCookieClicker.HowYou’llLearnThecourseissplitinto5weeks,witheachweekinvolving7to10hoursofstudy.You’lllearnprimarilythroughvideolecturesandgradedassignments,althoughthecoursedoessupplysupplementalnotesandactivitiesforfurtherreadingandpractice.You’llcodeandsubmitthehomeworkandmini-projectsontheircompanionwebsiteCodeSkulptor,andin-browsercodeeditorthatwillpreempttheneedofsettingupalocalcodingenvironment. Institution RiceUniversity Provider Coursera Instructors ScottRixner,JoeWarren,LuayNakhleh Level Intermediate Workload 40hourstotal Enrollments 30K Rating 4.7/5.0(600) Certificate Paid FunFactsThecoursehasaround15kbookmarksonClassCentral.ThiscourseisthethirdofsevencoursesthatmakeuptheFundamentalsofComputingSpecialization.Uponreceivingthespecializationcertificate,you’llhavecompleted20+projects,includingacapstoneproject.Ifyou’renotinterestedintakingafullspecializationafterthiscourse,butyou’dliketolearnmoreaboutthecoursetopic,asthecoursenameimplies,there’safollow-upcourse:PrinciplesofComputing(Part2).CourseinstructorProf.ScottRixnerisfacultydirectoroftwoonlinedegreeprogramsatRiceUniversity.SohisdedicationtoonlineeducationextendsbeyondthescopeofhisownMOOCs.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.5.ComputerScience101(StanfordUniversity)Prof.NickParlante,courseinstructorComputerScience101aimstodemystifythemagicofcomputersbydemonstratingthattheyworkbyfollowingafewrelativelysimplepatterns.Thiscoursewillhelpyoubecomefamiliarwiththosepatterns.Itwillgiveinsightsintohowcomputersworkandwhattheirlimitationsare.Inaddition,thecoursedelvesintonetworkingandothermajortopicswithinCS.Nopriorknowledgeofcomputersciencerequired!WhatYou’llLearnThecoursestartsoffwiththefundamentalequationofcomputers:Computer=Powerful+Stupid.Computersarepowerfulbecausetheycanperformbillionsofoperationspersecond.Buttheyarestupidbecausetheyneedsomeonetotellthemwhattodo.Thisiswhereprogrammerscomeintoplay.ThiscourseusessmallsnippetsofJavaScripttointroduceyoutoprogrammingandothercomputerscienceconcepts.You’llgainagraspofprogrammingconceptslikevariables,loopsanditerations,conditionalstatements,andsoon.Thecourselatercoverslow-levelandhigh-levellanguages,aswellascompilersandinterpreters.Thecomputerisatoolandtheprogrammerwieldsthetool.Therefore,toprogramefficiently,itisimportanttounderstandhowthetoolworks.Thecoursecoversmanyaspectsofsaidtool,includinghardware.You’lllearnaboutthepartsthatmakeupacomputer,andlookathowcomputerscanrepresentdifferentinformationformats.Themainformatyou’llworkwithisimages.Oneofthethingsyou’lldois“greenscreen”imagesaswellasturncolouredimagesintograyscalebyoperatingattheindividualpixellevel.Anothertopicthecoursecoversiscomputernetworks,whichishowcomputerscommunicatewithoneanother.You’lllearnaboutthedifferenttypesofnetworks.You’llstudywhatIPaddressesareandhowtheyallowcomputerstolocateeachother.Thecoursediscusseshowcomputerstransmitinformationthroughdatapackets,andalsothecommunicationprotocoltheInternetrunson — TCP/IP.Thecoursealsobrieflycoversavarietyofothertopicslikedatabasesandspreadsheets,computersecurity,andanaloganddigitaldata.HowYou’llLearnThecourseis6weekslong,witheachweektaking4–6hourstocomplete.Lessonsareprovidedthroughvideolecturesandaresupplementedwithnotesandassessments.However,you’llneedtobeaverifiedlearnertoaccesstheassessments. Institution StanfordUniversity Provider edX Instructor NickParlante Level Beginner Workload 36hourstotal Enrollments 100K Certificate Paid FunFactsTheinstructoracknowledgesGoogleforsupportinghisearlyresearchintocreatingtheclass.Ithinkthisgoesforallofus!Thiscoursehas3kbookmarksonClassCentral.ThecourseinstructorNickParlante’scurrentinterestisinCodingBatJava,anexperimentalonlinecode-practicetool.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.6.HowComputersWork(UniversityofLondon)Dr.MarcoGillies,courseinstructorThisconcisecoursetaughtbytheUniversityofLondononCourseratouchesonafewkeytopicsincomputerscience,butitismostlyinterestedinhelpingyoubuildafoundationalunderstandingofhardware.It’sinthetitlereally:bytheendofthecourse,you’llknowhowcomputerswork.Andthroughthatunderstanding,you’llalsoformaclearerpictureofhowcomputerscanbeleveragedtohelpsolveeverydayproblems.ThecourseisjustassuitableforsomeonewantingtobuildsolidfoundationsforfurtherstudyinCS,asitisforsomeonesimplycuriousabouthowcomputersworkandwantingtoexploresomekeyCStopicsbutnotnecessarilyadeepdive.Youdonotneedanypriorknowledgeofcomputersciencetotakethiscourse.WhatYou’llLearnThiscoursecoverscomputerhardware,abstraction,modularity,computernetworksandcommunication.Thecoursebeginswithabstraction—theartofdrawingattentiontotheimportantdetailswhilefilteringoutthenoise.Manydisciplinesrelyonabstraction,andcomputersciencedoessoheavily,bothatthehardwareandsoftwarelevels.Thisconceptwillbecomeapparentwhenthecoursestartsdiscussingcomputerhardware,likememory,CPU,andotherdevices.You’llusenotionalmachinesasmeansforcapturingtheseabstractions.Afterwards,you’llmoveontoanotherkeyidea:stateandmodularity.Thiswillhelpyouanswerthequestion,‘Whydoesturningoffandonmycomputerfixmostproblems?’Usingnotionalmachines,you’llexplainhowcomputerapplicationsfunctionbytransitioningthroughdifferentstates,andhowmodularityallowsthemtointeractwithotherapplications.You’lllearnhowtodebugstuff,averyusefulskillindeed.Movingon,you’lllearnhowcomputerstalktooneanotherovertheInternetthroughnetworksandcommunicationprotocols.You’llalsolearnaboutthekindsofsecuritythreatscomputers(andusers)face,andhowtoprotectyourselffrommaliciousactors.Lastly,you’llexplorebasicwebdevelopment.Byapplyingyournew-foundknowledgeofabstraction,state,andmodularity,you’llbeabletoclearlyunderstandhowwebsiteswork.HowYou’llLearnThecourseis4weekslong,with10hoursworthofmaterialperweek.Itconsistsofvideolecturesandquizzestotestyourknowledgeofthematerial.You’llhavethechancetoshareyourthoughtsindiscussionprompts. Institution UniversityofLondon Provider Coursera Instructor MarcoGillies Level Beginner Workload 40hourstotal Enrollments 25K Rating 4.6/5.0(440) Certificate Paid FunFactsThecourseinstructor,Prof.MarcoGillies,istheAcademicDirectorofDistanceLearningatGoldsmiths,UniversityofLondon.ThiscourseisanintroductiontotheUniversityofLondon’sOnlineBachelorofComputerScience,offeredonCoursera.ItiscoursetwooutofthreeoftheIntroductiontoComputerScienceandProgrammingSpecialization,withthefirstcoursebeingIntroductiontoComputerProgramming.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.7.CS50'sUnderstandingTechnology(HarvardUniversity)Prof.Malan(again!),courseinstructorThisisanothercoursefromtheCS50family.Butunlikeourfirstpick,whichisthemainCS50course,thiscourseisforthosewhoworkwithtechnologyeverydaybutdon’tunderstandhowitallworksunderthehoodorhowtosolveproblemswhensomethinggoeswrong.Andit’salsoforthosewhodon’t(yet)workwithtechnology—mostnotably,computers—butwouldnonethelessliketounderstanditsfunctioning.Thecourseaimstofillinthegapsinyourknowledgeofhardware,internet,multimedia,programming,andwebdevelopment,preparingyouforthetechnologyoftodayandtomorrow.Thiscoursehasnoprerequisites.WhatYou’llLearnThecoursebeginswithanintroductiontothelanguageofcomputers,binary.Itexplainshowcomputersusebinarytorepresenttextandotherinformation.Then,you’llmoveontothehardwareofthecomputer:CPU,RAMandMainMemory.You’lllearnaboutthefunctionsofeachofthesecomponents.ThecoursediscussesInternetandmultimedia,andthetechnologiesunderpinningthem.It’lltellyouhowcomputerscanfindandtalkwithoneanother.You’lllearnaboutthecommonInternetprotocolTCP/IPandmore.You’lllearnaboutthedifferentdatarepresentationsofmultimedia,likeaudio,images,andvideo.Therearemanyfileformatsandcompressiontechniques–thecoursewillgiveyouanoverviewofsomeofthemainones.Next,you’llbetaughthowtostaysafeontheInternet.You’lldiscoverseveralwaystoprotectyourdataandprivacy.Thissectionwillincludelessonsoncookies,passwords,two-factorauthentication,encryption,andmore.You’llcontinuewiththebasicsofwebdevelopment.You’lllearnhowwebbrowsersaccessthewebwithHTTPrequests.Haveyoueverseena404or500errorwhentryingtovisitawebpage?Youprobablyhave.Well,inthiscourse,you’lllearnwhattheseerrorsmean.Abriefoverviewonthelanguagesthatallowustobuildandstylewebpages,HTMLandCSS,isprovided.Lastbynotleast,you’lldiscoverthebasicsofprogramming.You’llprimarilyusetheblock-basedlanguageScratchtoexploreconceptscommontoprettymuchallprogramminglanguages,likevariables,expressions,loops,andsoon.Additionally,todemonstratewhatanalgorithmis(andmorespecificallythedivide-and-conquerparadigm),you’llwatchtheinstructortearaphonebookintohalves…Ihadtomentionthisbecauseitisbothveryinstructiveandmemorable!HowYou’llLearnThecourseis6weekslong,witheachweektaking2to6hourstocomplete,dependingonyourpriorfamiliaritywiththecontent.Eachweekcontainsatleastonehouroflecture.Regardingassessments,you’llhavetocompleteanassignmentforeachofthesixtopicspresentedinthecoursetoearnacertificate. Institution HarvardUniversity Provider edX Instructor DavidJ.Malan Level Beginner Workload 36hourstotal Enrollments 100K Certificate FreeandPaid(seebelow) FunFactsAftertakingthiscourse,you’llbemorethanreadytotackleCS50,our#1pick.Thiscoursehas1.6kbookmarksonClassCentral.AnotherfactaboutDavidJ.Malan,thecourseinstructor:heisanactivememberoftheSIGCSE,thearmoftheACMconcernedwithcomputerscienceeducation.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.8.IntrotoTheoreticalComputerScience(Udacity)ScreenshotfromthecourseForthosewhohavesomefamiliaritywithprogrammingandalgorithms,andwanttofurthertheirunderstandingofproblem-solvingincomputerscience,thisrigorousbutinsightfulcoursemightbewhatyou’relookingfor.OfferedbyUdacity,IntrotoTheoreticalComputerScienceexploreswhatmakesaproblem‘hard’tosolve,evenforacomputer.Then,itshowshowtoreduceandsimplifythese‘hard’problemstomakethemeasiertosolvethroughcomputation.WhatYou’llLearnThecoursecoverstwomainareasoftheoreticalcomputerscience:complexitytheoryandcomputability.Complexitytheoryaskshowmuchofitsresources,liketimeormemory,willacomputerrequiretosolveaproblem.Computability,ontheotherhand,asksifacomputercansolveaproblematall,evenwhengivenmoretimeandmemory.Thecourseintroducesyoutoavarietyofreal-worldproblemsfromtelecommunication,bioinformatics,andfinance.Youwillrecognizewhatmakesaproblemchallenging,andthevalueofrecognizingsuchproblems.ThiswillprimeyouforunderstandingwhatNP-completenessis.Then,you’llunderstandwhatmakesaproblem‘hard’tosolve,andbeabletoproveit.Therestofthecoursediscusseswhattodowiththeproblemoncewe’veprovedthatitishard(orevenimpossibletosolve).Oneofthewaystoovercomethisobstacleistoemployefficient,intelligentalgorithms.Anotherwayistoacceptthattheproblemmaynotbeperfectlysolvable,andinsteadfindanapproximatesolution.Andyetanotherwayistouserandomnessandprobabilitytopokearoundandfindasolution.You’llbeabletodescribeandusethesetechniquesinpracticalsituations:thecoursediscussesthetheorybutit’salsohands-on.Lastly,you’llmoveontoproblemsthatnocomputercaneversolveintheory.Youwilllearnaboutundecidabilityandrecognizethelimitsofcomputability.HowYou’llLearnThecourseis8weekslong,withatotal14hoursofvideolectures.Somevideoshaveaquiztohelpyoupracticerecallingwhatyou’velearned.Thereare7chapters,andattheendofeachchapteryouwillcompleteaproblemsettoputyournew-foundskillstogooduse.Finally,there’sasummativeexamattheendofthecourse. Provider Udacity Instructors SebastianWernicke,SeanBennett,SarahNorell Level Intermediate Workload 25hours Certificate None FunFactsThiscoursehas2.2kbookmarksonClassCentral.Oneofthecourseinstructors,SebastianWernicke,hasspokenmultipletimesatTED.Totacklethiscourse,youmaywanttolearnaboutalgorithmsfirst.TheinstructorsrecommendanotherUdacitycourseonalgorithmsasarefresher.Inaddition,goodmathfoundationswouldbeusefultoo.Checkourpicksbelowifneeded.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.9.MathematicsforComputerScience(UniversityofLondon)Dr.SaraSantos,courseco-instructorOfferedbytheUniversityofLondon,thiscourseintroducesyoutothemathematicsandmathematicalthinkingcomputerscientistsuseintheirwork.Whatdistinguishesthiscoursefromothermathcoursesisitsplayfulness,withfunandinteractiveexercises.Morespecifically,thecoursecombineselementsofalgebra,analysis,andgeometry—topicscarefullypickedtoserveasthebackboneofyourcomputerscienceeducation.Thecoursediscusses,amongothers,numberbases,anessentialtopictounderstandbinary,andconversionbetweenbinaryandotherbases,suchashexadecimal.Itexploresnumericalprogressions,likethewell-knownFibonnacisequence.Anditwilltouchongeometryandfunctiongraphing.Bytheendofthecourse,you’llhaveacquiredthefoundationneededtounderstandthemaththatunderpinsothercomputersciencecourses,andyou’llbereadytotacklemoreadvancedmathematicaltopics.ThecourseassumesyouknowsomehighschoolmathematicsaswellasbasicPythonprogramming.WhatYou’llLearnThecourseinvestigatesfivemaintopics:numberbases,modulararithmetic,sequences,series,graphsketchingandkinematics.Thecoursebeginswiththestudyofnumberbases.Youmightknowthatbinaryisthenumberbaseusedbycomputers.Butdidyouknowthatcomputerscientistsalsousehexadecimals?You’llcoverthekeyconceptsofplacevaluesandnumbersystems,whichwillinvolveconvertingbetweenbinary,hexadecimal,anddecimal,aswellasadding,subtracting,andmultiplyingthemtogether.Oh,acoolthingthatthecourseteachesyouissteganography,theartofhidingmessagesinimages!Next,you’llcovermodulararithmetic.Haveyoueverwonderedwhat“modulo7”means?You’lllearnabouttheusefulnessofcongruenceandmodulararithmeticoperationsincomputerscience (psst,itcanbeusedforencryption).You’llidentify,describe,andcomputesequencesofnumbersandtheirsums.You’llstudyaspecialfamilyofsequencescalledprogressions,whichconsistsofarithmeticandgeometricprogressions.You’lllearnhowsequencescanbeusedtogeneraterandomnumbers.Additionally,you’llbeabletotellwhenaseriesconverges(meetsatapoint)ordiverges(approachesinfinity)Lastly,thecoursedescribeshowtorepresentanddescribespacenumericallyusingcoordinatesandgraphs.You’llseehowgraphscanhelpusvisualizeandtransformfunctionslikestraightlines,quadratics,cubics,reciprocalsandmore.Anexampleofmodelingmotionwillbegiven:thefieldofmathematicscalledkinematics.HowYou’llLearnThecourseis6weekslong,withabout40hoursworthofmaterial.Eachweekcomeswithoneormorequizzes,allowingyoutolearnbydoing.However,you’llneedtopayforthecertificateforthecourseautogradertomarkyouranswers. Institutions UniversityofLondon Provider Coursera Instructors MatthewYee-KingandSaraSantos Level Beginner Workload 40hourstotal Enrollments 22K Rating 4.1/5.0(200) Certificate Paid FunFactsItisthethirdandfinalcourseoftheIntroductiontoComputerScienceandProgrammingSpecialization.Dr.SaraSantosenjoysmathbusking,whichseekstosurpriseandamusepeopleonthestreetswithperformancesrootedinmath.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere.10.MathematicsforComputerScience:EssentialSkills(UniversityofHull)LauraBroddle,courseinstructor,teachingVenndiagramsIfyouhavetakenalookattheprevioustwocoursesbutdonothavethemathematicalfoundationstotakethemyet,thiscoursecanhelpyouwiththebasics.Thiscourseisashortcourseonmathematicsskillsforcomputerscience,offeredbytheUniversityofHullonFutureLearn.Meantforlearnersstartingorconsideringstudyingcomputerscienceattheuniversitylevel,thiscoursecoversVenndiagramsandsettheory,algebratechniques,andvectorsandmatrices—allfundamentalsconceptsubiquitousincomputerscience.Thecourseassumesnopriormathematicalknowledge.You’restartingfromscratch.WhatYou’llLearnStartingoffwithVenndiagramsandsettheory,you’lllearnhow“sets”(bagsofobjects,ifyouwill)canbeformalizedandoperatedon.You’lllearntoreasonaboutcomputationsandobjectsofcomputation.Venndiagramswillhelpyouvisualizethistypeofreasoning.You’llthenmoveontoalgebraanditstechniques.You’llbegivenanoverviewofalgebra(whichcouldbedescribedasdoingmathusingvariablesinsteadofexplicitnumbers)anditsuseinalgorithmsandscientificcomputation.Thecoursewillteachyouhowtosolvelinearequationsandquadraticequationsusingalgebra.Thecourseendswithanoverviewofvectorsandmatrices.You’lllearnwhatvectorsare,andwhytheyareespeciallyimportantingraphicsprogramming.You’lllearnhowwecanrepresentvectorsasmatrices,andhowtomodify,transform,andinvertmatricestosolvecomplexproblems.HowYou’llLearnThiscourseis3weekslong,witharound3hoursofmaterialperweek.You’lllearnprimarilythroughvideomaterial,althoughtherearediscussionforumswhereyoucandiscussproblemswithfellowlearners.Attheendofeachweek,thereisaquizthat’llhelpyoustrengthenyourunderstandingofmathematicalconceptsandapplications. Institution UniversityofHull Provider FutureLearn Instructor LauraBroddle Level Beginner Workload 9hourstotal Enrollments 1.2K Certificate Paid FunFactsThecourseinstructor,LauraBroddle,joinedtheUniversityofHullin2015asafoundationmathteachingfellow.ShealsohadvisitedasisterschoolinUgandaandwasratedanoutstandingteacherbyOfstedin2013.Ifyou'reinterestedinthiscourse,youcanfindmoreinformationaboutthecourseandhowtoenrollhere. ElhamNazif Part-timecontentwriterforClassCentral,full-timecomputersciencestudent. Ifyoureadthisfar,tweettotheauthortoshowthemyoucare.Tweetathanks Learntocodeforfree.freeCodeCamp'sopensourcecurriculumhashelpedmorethan40,000peoplegetjobsasdevelopers.Getstarted
延伸文章資訊
- 1Search | MIT OpenCourseWare | Free Online Course Materials
MIT OpenCourseWare is a web-based publication of virtually all MIT course content. OCW is open an...
- 210 Best Computer Science Courses to Take in 2022
Launched on edX in 2012, CS50 is the computer science course on the ... The course is ten weeks l...
- 38 Best Computer Science Courses for Beginners to Learn Online in 2022
- 4The 11 Best Free Online Coding Courses for Computer Programming
- 5Computer Science Courses | Harvard University
Browse the latest online computer science courses from Harvard University, including "CS50's Intr...