CS50 Appliance 2014
CS50 Appliance 2014
CS50 Appliance 2014
CS50Manual(/)
TableofContents
NOTICE
Cheatsheet
Notice
Instructions
HowtoInstallAppliance
HowtoUpdateAppliance
HowtoUseAppliance
HowtoChangePassword
HowtoOpenaTerminal
HowtoSSHtoAppliance
HowtoChangeResolution
HowtoEnableDropbox
HowtoPreventDropboxfromSynchingPersonalFilesintotheAppliance
HowtoTransferFilesbetweenApplianceandYourComputer
Windows
MacOS
HowtoTakeaScreenshot
HowtoShareControlofYourScreen
Changelog
KnownIssues
FutureWork
Acknowledgements
NOTICE
Thedocumentationonthispageisforversion2014oftheCS50Appliance.
Youshoulduseversion2014oftheapplianceifyouare:
takingCS50x2015throughedX,
takingCSCIE50inSpring2015throughHarvardExtensionSchool,
pursuingaCS50Certificatein2015throughHarvardDivisionofContinuing
Education,or
followingthefall2014offeringofCS50online.
Inanyoftheabovecases,followtheinstructionslateronthispage.
IffollowingFall2013ofCS50(orCSCIE50),youshoulduseversion19(../19)ofthe
appliance.
IffollowingFall2012ofCS50(orCSCIE52),youshoulduseversion17(../17)ofthe
appliance.
IffollowingSummer2012ofCSCIS75,youshouldalsouseversion17(../17)ofthe
appliance.
IffollowingSpring2012ofCS1,CS51,orCS164,youshoulduseversion3(../3)ofthe
appliance.
IffollowingFall2011(https://www.cs50.net/)ofCS50,youshoulduseversion2.3(../2.3)of
theappliance.
IffollowingFall2010(http://cs50.tv/2010/fall/)ofCS50,youshoulduseversion2.1(../2.1)of
theappliance.
IffollowingFall2009(http://cs50.tv/2009/fall/)ofCS50,youshoulduseversion1.4(../1.4)of
theappliance.
TheCS50Applianceisavirtualmachine(http://en.wikipedia.org/wiki/Virtual_machine)(VM)that
letsyou"take"CS50(andothercourses!),evenifyourenotastudentatHarvard.Itsbasedon
Ubuntu(http://en.wikipedia.org/wiki/Ubuntu_(operating_system)),aLinux
(http://en.wikipedia.org/wiki/Linux)basedoperatingsystem
(http://en.wikipedia.org/wiki/Operating_system).Itsanappliance
(http://en.wikipedia.org/wiki/Computer_appliance)inthesensethatwevepreconfiguredthisVM
foraspecificpurpose:CS50!
Inotherwords,evenifyourenotastudentinCS50,youcanstillplayalongathome.TheCS50
Appliancewillletyoucompilesourcecodefromlecturesandimplementproblemsetswithout
havingtofigureouthowtoconfigureclang(http://en.wikipedia.org/wiki/Clang),etc.yourself.
Moreover,theCS50ApplianceletsyourunLinuxinsideofawindowonyourowncomputer,
evenifyourealreadyrunning(someotherversionof)Linux,MacOS,Solaris,orWindows!
Incidentally,theapplianceisalwaysworkinprogress,sopleaseforgiveanybugs!
Incaseyourcomputerisunabletosupportavirtualmachine,oryousimplyprefernottouse
one,andyouknowhowtoinstallLinuxfromanISO9660image,weprovideanISOimage
(http://mirror.cs50.net/appliance50/2014/releases/29/appliance502014.iso)thatyoucanuseto
installanUbuntusystemequivalenttotheCS50Applianceon"baremetal".
Cheatsheet
Seeinstructionsformuchmoredetail.
YourName
JohnHarvard
Your
jharvard
Username
Your
crimson
Password
Appliances
anumberoftheformw.x.y.z,whichcanbefoundintheappliances
IPAddress
bottomrightcorner
Appliances
Version
canbefoundintheappliancesbottomrightcorner
YourMySQL
jharvard
Username
YourMySQL
crimson
Password
phpMyAdmin
http://localhost/phpmyadmin/ fromwithintheappliance
http://*w.x.y.z*/phpmyadmin/ fromyourowncomputer(where
*w.x.y.z* istheIPaddressintheappliancesbottomrightcorner)
Notice
Forresearchpurposes,theCS50Applianceisdesignedtolog:
sourcecodethatyoucreateand/orsaveinsideoftheappliance.Thoselogsarethen
periodicallyuploadedtoCS50sservers.
AmongCS50soverarchingresearchgoalsaretounderstandbetterhowstudentscode,how
studentsrespondtoerrormessages,andhowstudentsprogressfromnonworkingtoworking
code.Noneofthedatathatsloggedisusedtocomputegrades.
TheCS50Appliancedoesnot(andcannot)loganyactivitiesorfilesonyourownMacorPC
(outsideoftheCS50Appliance).ItcanonlylogactivityinsideoftheCS50Appliance(i.e.,
insideofitsownwindow).Evenso,youmaydisabletheuploadingoflogstoCS50sserversif
youwouldliketooptoutofthisresearch.Simplyrun no50 inaterminalwindowtooptout.
Instructions
HowtoInstallAppliance
InordertoinstalltheCS50Appliance,youfirstneedtoinstallahypervisor
(http://en.wikipedia.org/wiki/Hypervisor),whichisaprogramthatwillletyourunvirtualmachines
(http://en.wikipedia.org/wiki/Virtual_machine)onyourowncomputer,whetheryourunMacOS,
Windows,orLinux.
IfyouhaveaMac,youcancheckwhichversionofOSXitsrunningbyselectingAboutthis
MacfromtheApplelogomenuatthetopleftcornerofyourscreen.IfyourversionofOSX
is10.8.x("MountainLion")orlater,werecommendthatyoufollowtheseinstructionsfor
VMwareFusion7(fusion/).[1]
IfyouhaveaPCrunninga64biteditionofWindowsorLinux,werecommendthatyou
followtheseinstructionsforVMwareWorkstation11(workstation/).[2]
Alternatively(ifyourcomputerdoesntmeettherequirementsabove,oryourunintotroublewith
theapplicationsdonatedbyVMware),youmightfollowtheseinstructionsforVirtualBox
(virtualbox/).
Oncetheapplianceinstalled,itsnotuncommonforittotakeaminuteorsotoboot.Butif,once
atJohnHarvardsdesktop,theappliancestillfeelsunbearablyslowonaPCrunningWindows
orLinux,youmightneedtoenablehardwarevirtualization(/virtualization).(Hardware
virtualizationshouldbeenabledbydefaultonanyIntelbasedMacmanufacturedinthepastfew
years.)Evenwithhardwarevirtualizationenabled,though,virtualmachinesmightstillfeelslow
ifyourcomputerisafewyearsold,hasaCPUthatsrunningatlessthan2GHz,orhasonly
1GBorsoofRAM.
HowtoUpdateAppliance
Todeterminewhichversionoftheapplianceyouhave,simplylookintheappliancesbottom
rightcorner,whereyoushouldsee 2014 inboldface,where isanumber.Alternatively,you
canopenaterminalandexecute
appliance50v
whichshouldreport 2014# aswell.
Toensureyouhavethelatestversionoftheappliance,youcanupdateyoursbyopeninga
terminalandexecuting:
update50
Anupdatemaytakeseveralminutes.
Notethatyoucannotupdatefromversion1.4,2.1,2.3,3,17a,17,or19oftheapplianceto
version2014.Youmustinsteaddownload2014,pertheinstructionsabove.
HowtoUseAppliance
ThefirstthingyoushouldseewhentheappliancebootsupisJohnHarvardsdesktop.(Oh,
henceforth,youareJohnHarvard(http://en.wikipedia.org/wiki/John_Harvard_(clergyman)).Your
initialpasswordiscrimson.Andhereswhatyoulooklike
(http://en.wikipedia.org/wiki/File:BostonTrip91.jpg).)EventhoughyoumightthinkofLinuxas
havingonlyacommandlineinterface(http://en.wikipedia.org/wiki/Commandline_interface),
graphicaluserinterfaces(http://en.wikipedia.org/wiki/Graphical_user_interface)doexist.Weve
installedXfce(http://en.wikipedia.org/wiki/Xfce),oneofthemostpopular,foryou.However,we
installedasfewprogramsaspossibletokeeptheappliancesmall.Yourewelcometoinstall
additionalprogramsvia aptget .
HowtoChangePassword
Youcanchangeyourpasswordinanyoftheseways:
SelectMenu>SettingsManager>UsersandGroupsandfollowtheonscreenprompts.
Openaterminalandexecute:
passwd
Withthatsaid,allowustosuggestthatyounotchangeJohnHarvardspasswordifyourown
computerisalreadypasswordprotected.(Lifewillbesimplerwithcrimson.)Theappliancehas
beenconfiguredinsuchawaythatonlysomeonewithaccesstoyourcomputer(e.g.,you)can
accesstheappliance.EventhoughtheappliancecanconnecttotheInternet,theInternet
cannotconnecttotheappliance.
HowtoOpenaTerminal
Youcanopenaterminalinanyoftheseways:
SelectMenu>Accessories>TerminalEmulator.Youllfindyourselfinyourhome
directory( ~ ).
ClickTerminalsicon(ablacksquare)intheappliancesbottomleftcorner.Youllfind
yourselfinyourhomedirectory( ~ ).
RightclickanywhereonyourdesktopandselectOpenTerminalHere.Youllfindyourselfin
~/Desktop/ .
SelectMenu>Accessories>gedit.Youllfindyourselfinyourhomedirectory( ~ )in
geditsbottompanel.
Nomattertheapproachyoutake,itsintheterminalwindowthatyoullbeabletotype
commandslike cd , clang , ls ,etc.
HowtoSSHtoAppliance
IfyoudliketoSSHtotheappliancefromyourowncomputer(aswithTerminalonMacOSor
withPuTTYonWindows),youcanSSHfromyourcomputertotheappliancesIPaddress
(whichisdisplayedintheappliancesbottomrightcorner).
HowtoChangeResolution
Youcanchangetheappliancesresolution(i.e.,widthandheight)ineitheroftheseways:
SelectMenu>SettingsManager>Displaywithintheappliance,selectanewvaluetothe
rightofResolution,thenclickClose.
Clickanddragtheappliancesbottomrightcorner.
HowtoEnableDropbox
ThisfeaturerequiresInternetaccess.
Tomakeiteasiertobackupfileswithintheapplianceautomaticallyaswellassharethemwith
yourowncomputer(s),youcansynchronizeadirectoryinJohnHarvardsaccountwithDropbox
(http://www.dropbox.com/features).
HereshowtoconfiguretheapplianceforDropbox.
1. SelectMenu>Dropbox.
2. Youshouldbepromptedto"downloadtheproprietarydaemon"(i.e.,software)clickOK.
Thesoftwareshouldproceedtodownloadandunpack.
3. YoushouldthenbepromptedtosetupDropbox.
IfyoudontalreadyhaveaDropboxaccount,leaveIdonthaveaDropboxaccount
checked,thenclickNext.CreateyourDropboxasprompted.
IfyoualreadyhaveanDropboxaccount,checkIalreadyhaveaDropboxaccount,
thenclickOK.Loginasprompted.
4. IfpromptedtoupgradeyourDropbox,simplyleave2GBchecked(whichisfree)thenclick
Next,unlessyouwanttoupgradetoapaidaccount.
5. IfpromptedtoChoosesetuptype,leaveTypicalchecked,thenclickInstall.Ifpromptedto
"merge",clickMerge.
6. Ifpromptedtotakea5steptour,clickSkipTouritsscreenshotswontmatchwhatyoull
seeintheappliance.
7. WheninformedThatsit!,uncheckOpenmyDropboxfoldernow,thenclickFinish.A
Dropboxiconshouldthenappearintheappliancesbottomrightcorner.
Onlythosefilesandfoldersthatyousavein ~/Dropbox/ willbesynchronizedwithyour
Dropboxaccount.
HowtoPreventDropboxfromSynchingPersonalFilesintotheAppliance
1. CtrlclickontheDropboxiconintheappliancesbottomrightcornerandselect
Preferences.
2. ClickAdvanced.
3. ClickSelectiveSync.
4. Uncheckthefoldersthatyoudontwantsynchedintotheappliance.
5. ClickUpdate.
HowtoTransferFilesbetweenApplianceandYourComputer
IfyoudliketoSFTP(http://en.wikipedia.org/wiki/SSH_file_transfer_protocol)totheappliance
fromyourowncomputer(aswithCyberduck(http://cyberduck.ch/)onMacOSorwithWinSCP
(http://winscp.net/eng/download.php)onWindows),youcanSFTPfromyourcomputerto
w.x.y.z(wherew.x.y.zistheappliancesIPaddress,whichcanbefoundintheappliances
bottomrightcorner).
Alternatively,youcan"mount"JohnHarvardshomedirectory(viaaprotocolcalledSMB
(http://en.wikipedia.org/wiki/Server_Message_Block),otherwiseknownasCIFS
(http://en.wikipedia.org/wiki/CIFS))inawindowonyourowndesktop,toandfromwhichyoucan
draganddropfiles.Hereshow,whetheryourunLinux,MacOS,orWindows.
Windows
1. Openanyfolderonyourharddrive.
2. Clicktheaddressbaratopthefolderswindowandinput\\w.x.y.z\jharvard(wherew.x.y.zis
theappliancesIPaddress,whichcanbefoundintheappliancesbottomrightcorner),then
clickEnter.
3. Ifpromptedforyournameandpassword:
1. InputjharvardforUsername.
2. InputcrimsonforPassword.
3. CheckRemembermycredentialsifyoudlike.
4. ClickConnect.
JohnHarvardshomedirectoryshouldthenopeninanewwindow.
MacOS
1. SelectConnecttoServerfromtheFindersGomenu.
2. UnderServerAddress:,inputsmb://w.x.y.z(wherew.x.y.zistheappliancesIPaddress,
whichcanbefoundintheappliancesbottomrightcorner).(Clickthe+iconifyoudliketo
addtheappliancetoyourFavoriteServers.)ThenclickConnect.
3. Ifpromptedforyournameandpassword:
1. SelectRegisteredUser.
2. InputjharvardforName.
3. InputcrimsonforPassword.
4. ClickConnect.
JohnHarvardshomedirectoryshouldthenopeninanewwindow.
HowtoTakeaScreenshot
Itssometimeshelpfultotakeascreenshotoftheappliancesothatyoucanrememberorshare
somethingyouseeonyourscreen.
Totakeascreenshotinsideoftheappliance:
1. SelectMenu>Accessories>Screenshot.
2. CheckaRegiontocapture.
3. LeaveCapturethemousepointercheckedunlessyoudliketohideit.
4. LeaveDelaybeforecapturingat1,unlessyouneedmoretime.
5. ClickOK.
6. YoushouldthenbepromptedtodecideonanAction.LeaveSavecheckedandthenclick
OKifyoudliketosavethescreenshotasafiledecideonadestinationasprompted.You
canthensharethatscreenshotwithsomeoneifnecessary,asbyopeningGmailinFirefox
andsendingitasanattachment.
Youcanalsosharecontrolofyourscreenifyouneedsomeoneelsetoseemorethana
screenshot.
HowtoShareControlofYourScreen
ThisfeaturerequiresInternetaccess.
Sothatyoucanhelp(andbehelpedby!)fellowlearnersontheInternet,theappliancecomes
withTeamViewer(http://www.teamviewer.com/),whichletsyoushare(controlof)yourscreen
withsomeoneelse(a"partner")ontheInternet(andviceversa).
Toshareyourscreenwithsomeelse:
1. SelectMenu>TeamViewer.(ClickAcceptifprompted.)Awindowshouldappear.
2. TellyourpartnerYourIDandPasswordthatyousee.Onceyourpartnerinputsthose
values,yourscreenshouldbeshared.Thoughifyourowncomputerhasafirewall,you
mightfirstbepromptedto"allowincomingconnections"orthelike.
Toseesomeoneelsesscreen:
1. AskyourpartnerforaPartnerIDandPassword.
2. SelectMenu>TeamViewer.(ClickAcceptLicenseAgreementifprompted.)Awindow
shouldappear.
3. InputthePartnerIDintothatwindow,thenclickConnecttopartner.
4. Whenprompted,inputthePassword,atwhichpointyoushouldseeyourpartnersscreen.
Ifyouwouldliketoconnecttosomeoneelsesappliancefromyourowncomputer(ratherthan
fromyourownappliance)orfromamobiledevice,youcandownloadTeamViewerforfreefor
Android,iOS,Linux,MacOS,orWindowsfromhttp://www.teamviewer.com/en/download/
(http://www.teamviewer.com/en/download/).
Changelog
1.4(../1.4#Changelog)
2.0(../2.0#Changelog)
2.1(../2.1#Changelog)
2.2
2.3(../2.3#Changelog)
3(../3#Changelog)
19(../19#Changelog)
20140
TransitionedtoUbuntu
201424
201426
201429
KnownIssues
Noneatthistime.
FutureWork
Belowarefeaturesthatmaybeincludedinsomefutureversionoftheappliance.
AddSelenium.
Add dnsmasq andresolve*.localdomainto127.0.0.1.
AddsupportforstaticIPs.
Acknowledgements
ManythankstoeveryonewhoshelpedusimprovetheCS50Appliance,including,butnot
limitedto:
AaronOehlschlaeger
Amir
ChengGong
ChrisGerber
DanArmendariz
DarrinRagsdale
Dotty
FedericoLerner
GabrielGuimaraes
GlennHolloway
JamesLankford
KartikeyaSrivastava
MatthewPolega
MatthewRoknich
MauroBraunstein
NobuKikuchi
PhilipDurbin
R.J.Aquino
RobBowden
RodRuggiero
RolandoCruz
RoryOReilly
SergioPrado
ShaunGibson
1.IfyoureusingOSXversion10.7.x("Lion"),pleasedropanotetosysadmins@cs50.harvard.edu
(mailto:sysadmins@cs50.harvard.edu).
2.IfyourWindowsorLinuxcomputerrunsa32bitOS,pleasedropanoteto
sysadmins@cs50.harvard.edu(mailto:sysadmins@cs50.harvard.edu).
Copyright2015,CS50
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: