ossu/computer-science: Path to a free self-taught ... - GitHub

文章推薦指數: 80 %
投票人數:10人

This course will introduce you to the world of computer science. Students who have been introduced to programming, either from the courses above or through ... Skiptocontent {{message}} ossu / computer-science Public Notifications Fork 15.9k Star 117k 🎓Pathtoafreeself-taughteducationinComputerScience! License MITlicense 117k stars 15.9k forks Star Notifications Code Issues 9 Pullrequests 3 Actions Projects 0 Wiki Security Insights More Code Issues Pullrequests Actions Projects Wiki Security Insights ossu/computer-science Thiscommitdoesnotbelongtoanybranchonthisrepository,andmaybelongtoaforkoutsideoftherepository. master Branches Tags Couldnotloadbranches Nothingtoshow {{refName}} default Couldnotloadtags Nothingtoshow {{refName}} default 3 branches 5 tags Code Latestcommit waciumawanjohi AddDSATextbooktoExtras … ee63ae2 Jun11,2022 AddDSATextbooktoExtras Thankyouto@hamzakat Closes#994 ee63ae2 Gitstats 934 commits Files Permalink Failedtoloadlatestcommitinformation. Type Name Latestcommitmessage Committime .github/ISSUE_TEMPLATE Updateissuetemplates Feb17,2021 extras AddDSATextbooktoExtras Jun11,2022 .gitignore Update.gitignore Aug16,2020 CHANGELOG.md Makenotemoreprominent May8,2020 CONTRIBUTING.md Updatelinktocurricularguidelines May18,2020 CURRICULAR_GUIDELINES.md ClarifythatCS2013isthecurricularguidanceforOSSU May3,2020 FAQ.md AddlinktogoodreadsinFAQ Feb3,2022 HELP.md UseDiscordWidget Sep16,2020 LICENSE UpdateLicensefilecopyrightyear Jan29,2020 PROJECTS.md RemovedProjectwithDeadLink Jul21,2021 README.md MathforCS2010,2015/2019solutions Jun11,2022 Viewcode OpenSourceSocietyUniversity Contents Summary Community Curriculum Prerequisites IntroCS IntroductiontoProgramming IntroductiontoComputerScience CoreCS Coreprogramming Coremath CSTools Coresystems Coretheory Coresecurity Coreapplications Coreethics AdvancedCS Advancedprogramming Advancedsystems Advancedtheory Advancedmath Finalproject Evaluation Cooperativework WhichprogramminglanguagesshouldIuse? Congratulations Codeofconduct Howtoshowyourprogress Team README.md OpenSourceSocietyUniversity Pathtoafreeself-taughteducationinComputerScience! Contents Summary Community Curriculum Codeofconduct Team Summary TheOSSUcurriculumisacompleteeducationincomputerscienceusingonlinematerials. It'snotmerelyforcareertrainingorprofessionaldevelopment. It'sforthosewhowantaproper,well-roundedgroundinginconceptsfundamentaltoallcomputingdisciplines, andforthosewhohavethediscipline,will,and(mostimportantly!)goodhabitstoobtainthiseducationlargelyontheirown, butwithsupportfromaworldwidecommunityoffellowlearners. Itisdesignedaccordingtothedegreerequirementsofundergraduatecomputersciencemajors,minusgeneraleducation(non-CS)requirements, asitisassumedmostofthepeoplefollowingthiscurriculumarealreadyeducatedoutsidethefieldofCS. Thecoursesthemselvesareamongtheverybestintheworld,oftencomingfromHarvard,Princeton,MIT,etc., butspecificallychosentomeetthefollowingcriteria. Coursesmust: Beopenforenrollment Runregularly(ideallyinself-pacedformat,otherwiserunningmultipletimesperyear) Beofgenerallyhighqualityinteachingmaterialsandpedagogicalprinciples MatchthecurricularstandardsoftheCS2013:CurriculumGuidelinesforUndergraduateDegreeProgramsinComputerScience Whennocoursemeetstheabovecriteria,thecourseworkissupplementedwithabook. Whentherearecoursesorbooksthatdon'tfitintothecurriculumbutareotherwiseofhighquality, theybelonginextras/coursesorextras/readings. Organization.Thecurriculumisdesignedasfollows: IntroCS:forstudentstotryoutCSandseeifit'srightforthem CoreCS:correspondsroughlytothefirstthreeyearsofacomputersciencecurriculum,takingclassesthatallmajorswouldberequiredtotake AdvancedCS:correspondsroughlytothefinalyearofacomputersciencecurriculum,takingelectivesaccordingtothestudent'sinterests FinalProject:aprojectforstudentstovalidate,consolidate,anddisplaytheirknowledge,tobeevaluatedbytheirpeersworldwide Duration.Itispossibletofinishwithinabout2yearsifyouplancarefullyanddevoteroughly20hours/weektoyourstudies.Learnerscanusethisspread toestimatetheirenddate.MakeacopyandinputyourstartdateandexpectedhoursperweekintheTimelinesheet.AsyouworkthroughcoursesyoucanenteryouractualcoursecompletiondatesintheCurriculumDatasheetandgetupdatedcompletionestimates. Cost.Allornearlyallcoursematerialisavailableforfree.However,somecoursesmaychargemoneyforassignments/tests/projectstobegraded. NotethatbothCourseraandedXofferfinancialaid. Decidehowmuchorhowlittletospendbasedonyourowntimeandbudget; justrememberthatyoucan'tpurchasesuccess! Process.Studentscanworkthroughthecurriculumaloneoringroups,inorderoroutoforder. WerecommenddoingallcoursesinCoreCS,onlyskippingacoursewhenyouarecertainthatyou'vealreadylearnedthematerialpreviously. Forsimplicity,werecommendworkingthroughcourses(especiallyCoreCS)inorderfromtoptobottom,astheyhavealreadybeentopologicallysortedbytheirprerequisites. CoursesinAdvancedCSareelectives.Chooseonesubject(e.g.Advancedprogramming)youwanttobecomeanexpertinandtakeallthecoursesunderthatheading.Youcanalsocreateyourowncustomsubject,butwerecommendgettingvalidationfromthecommunityonthesubjectyouchoose. Contentpolicy.Ifyouplanonshowingoffsomeofyourcourseworkpublicly,youmustshareonlyfilesthatyouareallowedto. DoNOTdisrespectthecodeofconductthatyousignedinthebeginningofeachcourse! Howtocontribute Gettinghelp(DetailsaboutourFAQandchatroom) Community Wehaveadiscordserver!ThisshouldbeyourfirststoptotalkwithotherOSSUstudents.Whydon'tyouintroduceyourselfrightnow?JointheOSSUDiscord YoucanalsointeractthroughGitHubissues.Ifthereisaproblemwithacourse,orachangeneedstobemadetothecurriculum,thisistheplacetostarttheconversation.Readmorehere. Subscribetoournewsletter. AddOpenSourceSocietyUniversitytoyourLinkedinprofile! Note:ThereisanunmaintainedanddeprecatedfirebaseappthatyoumightfindwhensearchingOSSU.Youcansafelyignoreit.ReadmoreintheFAQ. Curriculum Curriculumversion:8.0.0(seeCHANGELOG) Prerequisites IntroCS IntroductiontoProgramming IntroductiontoComputerScience CoreCS Coreprogramming Coremath CSTools Coresystems Coretheory Coresecurity Coreapplications Coreethics AdvancedCS Advancedprogramming Advancedsystems Advancedtheory Advancedmath Finalproject Prerequisites CoreCSassumesthestudenthasalreadytakenhighschoolmath,includingalgebra,geometry,andpre-calculus. AdvancedCSassumesthestudenthasalreadytakentheentiretyofCoreCS andisknowledgeableenoughnowtodecidewhichelectivestotake. NotethatAdvancedsystemsassumesthestudenthastakenabasicphysicscourse(e.g.APPhysicsinhighschool). IntroCS IntroductiontoProgramming Ifyou'veneverwrittenafor-loop,ordon'tknowwhatastringisinprogramming,starthere.Thiscourseisself-paced,allowingyoutoadjustthenumberofhoursyouspendperweektomeetyourneeds. Topicscovered: simpleprograms simpledatastructures Courses Duration Effort Prerequisites Discussion PythonforEverybody 10weeks 10hours/week none chat IntroductiontoComputerScience Thiscoursewillintroduceyoutotheworldofcomputerscience.Studentswhohavebeenintroducedtoprogramming,eitherfromthecoursesaboveorthroughstudyelsewhere,shouldtakethiscourseforaflavorofthematerialtocome.Ifyoufinishthecoursewantingmore,ComputerScienceislikelyforyou! Topicscovered: computation imperativeprogramming basicdatastructuresandalgorithms andmore Courses Duration Effort Prerequisites Discussion IntroductiontoComputerScienceandProgrammingusingPython(alt) 9weeks 15hours/week highschoolalgebra chat CoreCS AllcourseworkunderCoreCSisrequired,unlessotherwiseindicated. Coreprogramming Topicscovered: functionalprogramming designfortesting programrequirements commondesignpatterns unittesting object-orienteddesign statictyping dynamictyping ML-familylanguages(viaStandardML) Lisp-familylanguages(viaRacket) Ruby andmore TheHowtoCodecoursesarebasedonthetextbookHowtoDesignPrograms.TheFirstEditionisavailableforfreeonlineandincludesproblemsetsandsolutions.Studentsareencouragedtodotheseassignments. Courses Duration Effort Prerequisites Discussion HowtoCode-SimpleData 7weeks 8-10hours/week none chat HowtoCode-ComplexData 6weeks 8-10hours/week HowtoCode:SimpleData chat ProgrammingLanguages,PartA 5weeks 4-8hours/week HowtoCode(Hearinstructor) chat ProgrammingLanguages,PartB 3weeks 4-8hours/week ProgrammingLanguages,PartA chat ProgrammingLanguages,PartC 3weeks 4-8hours/week ProgrammingLanguages,PartB chat Object-OrientedDesign 4weeks 4hours/week BasicJava DesignPatterns 4weeks 4hours/week Object-OrientedDesign SoftwareArchitecture 4weeks 2-5hours/week DesignPatterns Coremath Discretemath(MathforCS)isaprerequisiteandcloselyrelatedtothestudyofalgorithmsanddatastructures.Calculusbothpreparesstudentsfordiscretemathandhelpsstudentsdevelopmathematicalmaturity. Topicscovered: discretemathematics mathematicalproofs basicstatistics O-notation discreteprobability andmore Courses Duration Effort Notes Prerequisites Discussion Calculus1A:Differentiation(alt) 13weeks 6-10hours/week Thealternatecoversthisandthefollowing2courses highschoolmath chat Calculus1B:Integration 13weeks 5-10hours/week - Calculus1A chat Calculus1C:CoordinateSystems&InfiniteSeries 6weeks 5-10hours/week - Calculus1B chat MathematicsforComputerScience(alt) 13weeks 5hours/week 2015/2019solutions2010solutions2005solutions. Calculus1C chat CSTools Understandingtheoryisimportant,butyouwillalsobeexpectedtocreateprograms.Thereareanumberoftoolsthatarewidelyusedtomakethatprocesseasier.Learnthemnowtoeaseyourfutureworkwritingprograms. Topicscovered: terminalsandshellscripting vim commandlineenvironments versioncontrol andmore Courses Duration Effort Prerequisites Discussion TheMissingSemesterofYourCSEducation 2weeks 12hours/week - chat Coresystems Topicscovered: proceduralprogramming manualmemorymanagement booleanalgebra gatelogic memory computerarchitecture assembly machinelanguage virtualmachines high-levellanguages compilers operatingsystems networkprotocols andmore Courses Duration Effort AdditionalText/Assignments Prerequisites Discussion BuildaModernComputerfromFirstPrinciples:FromNandtoTetris(alt) 6weeks 7-13hours/week - C-likeprogramminglanguage chat BuildaModernComputerfromFirstPrinciples:NandtoTetrisPartII 6weeks 12-18hours/week - oneoftheseprogramminglanguages,FromNandtoTetrisPartI chat OperatingSystems:ThreeEasyPieces 10-12weeks 6-10hours/week - algorithms,familiaritywithCisuseful chat ComputerNetworking:aTop-DownApproach 8weeks 4–12hours/week WiresharkLabs algebra,probability,basicCS chat Coretheory Topicscovered: divideandconquer sortingandsearching randomizedalgorithms graphsearch shortestpaths datastructures greedyalgorithms minimumspanningtrees dynamicprogramming NP-completeness andmore Courses Duration Effort Prerequisites Discussion DivideandConquer,SortingandSearching,andRandomizedAlgorithms 4weeks 4-8hours/week anyprogramminglanguage,MathematicsforComputerScience chat GraphSearch,ShortestPaths,andDataStructures 4weeks 4-8hours/week DivideandConquer,SortingandSearching,andRandomizedAlgorithms chat GreedyAlgorithms,MinimumSpanningTrees,andDynamicProgramming 4weeks 4-8hours/week GraphSearch,ShortestPaths,andDataStructures chat ShortestPathsRevisited,NP-CompleteProblemsandWhatToDoAboutThem 4weeks 4-8hours/week GreedyAlgorithms,MinimumSpanningTrees,andDynamicProgramming chat Coresecurity Topicscovered Confidentiality,Integrity,Availability SecureDesign DefensiveProgramming ThreatsandAttacks NetworkSecurity Cryptography andmore Courses Duration Effort Prerequisites Discussion InformationSecurity:ContextandIntroduction 5weeks 3hours/week - chat PrinciplesofSecureCoding 4weeks 4hours/week - chat IdentifyingSecurityVulnerabilities 4weeks 4hours/week - chat Chooseoneofthefollowing: Courses Duration Effort Prerequisites Discussion IdentifyingSecurityVulnerabilitiesinC/C++Programming 4weeks 5hours/week - chat ExploitingandSecuringVulnerabilitiesinJavaApplications 4weeks 5hours/week - chat Coreapplications Topicscovered: Agilemethodology REST softwarespecifications refactoring relationaldatabases transactionprocessing datamodeling neuralnetworks supervisedlearning unsupervisedlearning OpenGL raytracing andmore Courses Duration Effort Prerequisites Discussion Databases:ModelingandTheory 2weeks 10hours/week coreprogramming chat Databases:RelationalDatabasesandSQL 2weeks 10hours/week coreprogramming chat Databases:SemistructuredData 2weeks 10hours/week coreprogramming chat MachineLearning 11weeks 4-6hours/week linearalgebra chat ComputerGraphics 6weeks 12hours/week C++orJava,linearalgebra chat SoftwareEngineering:Introduction 6weeks 8-10hours/week CoreProgramming,andasizableproject chat Coreethics Topicscovered: SocialContext AnalyticalTools ProfessionalEthics IntellectualProperty PrivacyandCivilLiberties andmore Courses Duration Effort Prerequisites Discussion Ethics,TechnologyandEngineering 9weeks 2hours/week none chat IntroductiontoIntellectualProperty 4weeks 2hours/week none chat DataPrivacyFundamentals 3weeks 3hours/week none chat AdvancedCS AftercompletingeveryrequiredcourseinCoreCS,studentsshouldchooseasubsetofcoursesfromAdvancedCSbasedoninterest. Noteverycoursefromasubcategoryneedstobetaken. Butstudentsshouldtakeeverycoursethatisrelevanttothefieldtheyintendtogointo. Advancedprogramming Topicscovered: debuggingtheoryandpractice goal-orientedprogramming parallelcomputing object-orientedanalysisanddesign UML large-scalesoftwarearchitectureanddesign andmore Courses Duration Effort Prerequisites ParallelProgramming 4weeks 6-8hours/week Scalaprogramming Compilers 9weeks 6-8hours/week none IntroductiontoHaskell 14weeks - - LearnPrologNow!(alt)* 12weeks - - SoftwareDebugging 8weeks 6hours/week Python,object-orientedprogramming SoftwareTesting 4weeks 6hours/week Python,programmingexperience (*)bookbyBlackburn,Bos,Striegnitz(compiledfromsource,redistributedunderCClicense) Advancedsystems Topicscovered: digitalsignaling combinationallogic CMOStechnologies sequentiallogic finitestatemachines processorinstructionsets caches pipelining virtualization parallelprocessing virtualmemory synchronizationprimitives systemcallinterface andmore Courses Duration Effort Prerequisites ComputationStructures1:DigitalCircuits 10weeks 6hours/week Nand2TetrisII ComputationStructures2:ComputerArchitecture 10weeks 6hours/week ComputationStructures1 ComputationStructures3:ComputerOrganization 10weeks 6hours/week ComputationStructures2 Advancedtheory Topicscovered: formallanguages Turingmachines computability event-drivenconcurrency automata distributedsharedmemory consensusalgorithms statemachinereplication computationalgeometrytheory propositionallogic relationallogic Herbrandlogic gametrees andmore Courses Duration Effort Prerequisites TheoryofComputation(Lectures) 8weeks 10hours/week discretemathematics,logic,algorithms ComputationalGeometry 16weeks 8hours/week algorithms,C++ GameTheory 8weeks 3hours/week mathematicalthinking,probability,calculus Advancedmath Courses Duration Effort Prerequisites Discussion EssenceofLinearAlgebra - - highschoolmath chat LinearAlgebra 14weeks 12hours/week corequisite:EssenceofLinearAlgebra chat IntroductiontoNumericalMethods 14weeks 12hours/week LinearAlgebra chat IntroductiontoLogic 10weeks 4-8hours/week settheory chat Probability 24weeks 12hours/week DifferentiationandIntegration chat Finalproject OSSUniversityisproject-focused. Theassignmentsandexamsforeachcoursearetoprepareyoutouseyourknowledgetosolvereal-worldproblems. Afteryou'vegottenthroughallofCoreCSandthepartsofAdvancedCSrelevanttoyou,youshouldthinkaboutaproblemthatyoucansolveusingtheknowledgeyou'veacquired. Notonlydoesrealprojectworklookgreatonaresume,buttheprojectwillalsovalidateandconsolidateyourknowledge. Youcancreatesomethingentirelynew,oryoucanfindanexistingprojectthatneedshelpviawebsiteslike CodeTriage or FirstTimersOnly. Studentswhowouldlikemoreguidanceincreatingaprojectmaychoosetouseaseriesofprojectorientedcourses.Hereisasampleofoptions(manymoreareavailable,atthispointyoushouldbecapableofidentifyingaseriesthatisinterestingandrelevanttoyou): Courses Duration Effort Prerequisites FullstackOpen 12weeks 15hours/week programming ModernRobotics(Specialization) 26weeks 2-5hours/week freshman-levelphysics,linearalgebra,calculus,linearordinarydifferentialequations DataMining(Specialization) 30weeks 2-5hours/week machinelearning BigData(Specialization) 30weeks 3-5hours/week none InternetofThings(Specialization) 30weeks 1-5hours/week strongprogramming CloudComputing(Specialization) 30weeks 2-6hours/week C++programming DataScience(Specialization) 43weeks 1-6hours/week none FunctionalProgramminginScala(Specialization) 29weeks 4-5hours/week Oneyearprogrammingexperience GameDesignandDevelopmentwithUnity2020(Specialization) 6months 5hours/week programming,interactivedesign Evaluation Uponcompletingyourfinalproject: Submityourproject'sinformationtoPROJECTSviaapullrequest. PuttheOSSU-CSbadgeintheREADMEofyourrepository! Markdown:[![OpenSourceSocietyUniversity-ComputerScience](https://img.shields.io/badge/OSSU-computer--science-blue.svg)](https://github.com/ossu/computer-science) HTML: Useourcommunitychannelstoannounceittoyourfellowstudents. SolicitfeedbackfromyourOSSUpeers. Youwillnotbe"graded"inthetraditionalsense—everyonehastheirownmeasurementsforwhattheyconsiderasuccess. Thepurposeoftheevaluationistoactasyourfirstannouncementtotheworldthatyouareacomputerscientist andtogetexperiencelisteningtofeedback—bothpositiveandnegative. Thefinalprojectevaluationhasasecondpurpose:toevaluatewhetherOSSU, throughitscommunityandcurriculum,issuccessfulinitsmissiontoguideindependentlearnersinobtainingaworld-classcomputerscienceeducation. Cooperativework Youcancreatethisprojectaloneorwithotherstudents! Welovecooperativework! Useourchannelstocommunicatewithotherfellowstocombineandcreatenewprojects! WhichprogramminglanguagesshouldIuse? Myfriend,hereisthebestpartofliberty! Youcanuseanylanguagethatyouwanttocompletethefinalproject. Theimportantthingistointernalizethecoreconceptsandtobeabletousethemwithwhatevertool(programminglanguage)thatyouwish. Congratulations Aftercompletingtherequirementsofthecurriculumabove,youwillhavecompletedtheequivalentofafullbachelor'sdegreeinComputerScience.Congratulations! Whatisnextforyou?Thepossibilitiesareboundlessandoverlapping: Lookforajobasadeveloper! Checkoutthereadingsforclassicbooksyoucanreadthatwillsharpenyourskillsandexpandyourknowledge. Joinalocaldevelopermeetup(e.g.viameetup.com). Payattentiontoemergingtechnologiesintheworldofsoftwaredevelopment: ExploretheactormodelthroughElixir,anewfunctionalprogramminglanguageforthewebbasedonthebattle-testedErlangVirtualMachine! ExploreborrowingandlifetimesthroughRust,asystemslanguagewhichachievesmemory-andthread-safetywithoutagarbagecollector! ExploredependenttypesystemsthroughIdris,anewHaskell-inspiredlanguagewithunprecedentedsupportfortype-drivendevelopment. Codeofconduct OSSU'scodeofconduct. Howtoshowyourprogress CreateanaccountinTrello. Copythisboardtoyourpersonalaccount. Seehowtocopyaboardhere. Nowthatyouhaveacopyofourofficialboard,youjustneedtopassthecardstotheDoingcolumnorDonecolumnasyouprogressinyourstudy. Wealsohavelabelstohelpyouhavemorecontrolthroughtheprocess. Themeaningofeachoftheselabelsis: MainCurriculum:cardswiththatlabelrepresentcoursesthatarelistedinourcurriculum. ExtraResources:cardswiththatlabelrepresentcoursesthatwereaddedbythestudent. Doing:cardswiththatlabelrepresentcoursesthestudentiscurrentlydoing. Done:cardswiththatlabelrepresentcoursesfinishedbythestudent. Thosecardsshouldalsohavethelinkforatleastoneproject/articlebuiltwiththeknowledgeacquiredinsuchacourse. Section:cardswiththatlabelrepresentthesectionthatwehaveinourcurriculum. ThosecardswiththeSectionlabelareonlytohelptheorganizationoftheDonecolumn. YoushouldputtheCourse'scardsbelowitsrespectiveSection'scard. Theintentionofthisboardistoprovideourstudentsawaytotracktheirprogress,andalsotheabilitytoshowtheirprogressthroughapublicpageforfriends,family,employers,etc. Youcanchangethestatusofyourboardtobepublicorprivate. Team EricDouglas:founderofOSSU JoshHanson:leadtechnicalmaintainer WaciumaWanjohi:leadacademicmaintainer Contributors About 🎓Pathtoafreeself-taughteducationinComputerScience! Topics computer-science curriculum courses awesome-list Resources Readme License MITlicense Stars 117k stars Watchers 5.3k watching Forks 15.9k forks Releases 5 tags Packages0 Nopackagespublished Contributors122 +111contributors Youcan’tperformthatactionatthistime. Yousignedinwithanothertaborwindow.Reloadtorefreshyoursession. Yousignedoutinanothertaborwindow.Reloadtorefreshyoursession.



請為這篇文章評分?