Course Overview Computer Systems Programming ECE 2400 / ENGRD 2140

1y ago
5 Views
2 Downloads
4.59 MB
35 Pages
Last View : 1m ago
Last Download : 3m ago
Upload by : Kamden Hassan
Transcription

ECE 2400 / ENGRD 2140Computer Systems ProgrammingCourse OverviewChristopher BattenSchool of Electrical and Computer EngineeringCornell 00

What is Computer Systems Programming?ActivityTrends in Computer Systems ProgrammingCourse LogisticsECE 2400 / ENGRD 2140Computer Systems ProgrammingWhat is Computer Systems oftwareActivity: Comparing AlgorithmsTrends in Computer Systems ProgrammingCourse LogisticsECE 2400Course Overview2 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsApplications vs. TechnologyApplicationGap too large to bridge in one step(but there are exceptions,e.g., a magnetic compass)TechnologyECE 2400Course Overview3 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsApplications vs. TechnologyApplicationTechnologyECE 2400Course Overview3 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsThe Computer Systems StackComputer EngineeringApplicationAlgorithmProgramming LanguageOperating SystemCompilerInstruction Set ArchitectureMicroarchitectureRegister-Transfer LevelGate LevelCircuitsDevicesTechnologyTraditionalComputer ScienceComputer Engineering is at theinterface between hardware and softwareand considers the entire systemTraditionalElectrical EngineeringIn its broadest definition, computer engineering is thedevelopment of the abstraction/implementation layers that allow us toexecute information processing applications efficientlyusing available manufacturing technologiesECE 2400Course Overview4 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsComputer EngineeringPython for Application-Level ProgrammingApplicationAlgorithmProgramming LanguageOperating SystemCompilerInstruction Set ArchitectureMicroarchitectureRegister-Transfer LevelGate LevelCircuitsDevicesTechnologyI High-level, userfacing softwareApplication-LevelSoftware?I Enable productivelydevelopingapplications thatprovide newfunctionality tousersI Enable productivelycollecting,analyzing,visualizing dataI Sometimes called aproductivity-levellanguageECE 2400Course Overview5 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsComputer EngineeringC/C for System-Level ProgrammingECE 2400ApplicationAlgorithmProgramming LanguageOperating SystemCompilerInstruction Set ArchitectureMicroarchitectureRegister-Transfer LevelGate LevelCircuitsDevicesTechnologyI Connectsapplication softwareto the low-levelcomputer are?Course OverviewI Enables carefullymanagingperformance andresource constraintsI Sometimes calledan efficiency-levellanguage6 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsDynamically Interpreted vs. Statically Compileddef min(a,b):if a b:c aelsec breturn cLOAD FASTLOAD FASTCOMPARE OPPOP JUMP IF FLOAD FASTSTORE FASTJUMP FORWARDLOAD FASTSTORE FASTLOAD FASTRETURN VALUEPythonSource CodePythonLibrary CodeC/C Source CodeC/C Library BytecodeMachineObject FileExecutew/ InterpreterMachineObject FileLinkerMachineBinaryThe standard Pythoninterpreter is called CPythonand it is written in C!ECE 2400int min( int a,int b ){int c;if ( a b )c a;elsec b;return 11000011ExecuteBinaryCourse Overview7 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsComputer EngineeringComputer Systems Programming is DiverseECE 2400ApplicationAlgorithmProgramming LanguageOperating SystemCompilerInstruction Set ArchitectureMicroarchitectureRegister-Transfer LevelGate twareSystem-LevelSoftware?Course OverviewIIIIIPython, MATLABRuby, JavascriptSQL, LINQNumPyGUI rical librariesOperating systemsEmbedded control8 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsComputer EngineeringAside: C/C for Application-Level SoftwareECE 2400ApplicationAlgorithmProgramming LanguageOperating SystemCompilerInstruction Set ArchitectureMicroarchitectureRegister-Transfer LevelGate twareApplication-Level&System-LevelSoftware?Course Overview9 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsA Tale of Two Programming LanguagesPython Programming LanguageC/C Programming LanguageI Introduced: 1991I Introduced: 1972(C), 1979(C )I Most of the machine details areI Most of the machine details arehidden from programmerexposed to the programmerI Programmer gives up someI Programmer is in completecontrol for improved productivitycontrol for improved efficiencyI Easily supports multipleI Easily supports multipleprogramming paradigmsprogramming paradigmsI Extensive standard library isincludedI Slow and memory inefficientECE 2400I More limited standard library isincludedI Fast and memory efficientCourse Overview10 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsComparing the Popularity of Python vs. C/C The 2021 Top Programming Languages, IEEE SpectrumECE 2400Course Overview11 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse SwiftJavaFortranC 1Rust53CProgram Time / Fastest Program TimeComparing the Performance of Python vs. C/C The Computer Language Benchmarks GameECE 2400Course Overview12 / 33

What is Computer Systems Programming? ActivityTrends in Computer Systems ProgrammingCourse LogisticsProgram Algorithm Data StructureWhile this course covers C/C and system-level programming, thiscourse also builds off of your prior programming experience to furtherdevelop your understanding of algorithms and data structuresAlgorithmData StructureI Algorithm: Clear set of steps to solve any problem instance in aparticular class of problemsI Data Structure: Way of efficiently organizing and storing dataalong with operations for accessing and manipulating this dataECE 2400Course Overview13 / 33

What is Computer Systems Programming? Activity Trends in Computer Systems ProgrammingCourse LogisticsECE 2400 / ENGRD 2140Computer Systems ProgrammingWhat is Computer Systems oftwareActivity: Comparing AlgorithmsTrends in Computer Systems ProgrammingCourse LogisticsECE 2400Course Overview14 / 33

What is Computer Systems Programming? Activity Trends in Computer Systems ProgrammingCourse LogisticsActivity: Comparing AlgorithmsI Application: Sort 16 numbersI Activity Steps.1.2.3.4.5.6.Half the class will use Algorithm A, half uses Algorithm BWhen instructor starts timer, flip over worksheetSort 16 numbers using assigned algorithmLookup when completed and write time on worksheetRaise handWhen everyone is finished, then analyze dataI Algorithm Arepeat 16 timesfind smallest number not crossed off in input listcopy smallest number to next open entry in output listcross smallest number off input listECE 2400Course Overview15 / 33

What is Computer Systems Programming? Activity Trends in Computer Systems ProgrammingCourse LogisticsActivity: Comparing AlgorithmsI Algorithm Brepeat 8 times, once for each pair in column 1copy smallest from input pair into next entry in column 1copy largest from input pair into next entry in column 1repeat 4 times, once for group of 4 in column 2repeat 4 timescompare top two numbers not crossed off in both groupscopy smallest number to next open entry in column 2cross smallest number off input list. and so on .ECE 2400Course Overview16 / 33

What is Computer Systems Programming?Activity Trends in Computer Systems Programming Course LogisticsECE 2400 / ENGRD 2140Computer Systems ProgrammingWhat is Computer Systems oftwareActivity: Comparing AlgorithmsTrends in Computer Systems ProgrammingCourse LogisticsECE 2400Course Overview17 / 33

What is Computer Systems Programming?Activity Trends in Computer Systems Programming Course LogisticsTrend towards IoT and Cloud w/ Novel HardwareRoughly every decade a new, smaller, lower priced computer class formsbased on a new programming platform resulting in entire new ainframesPersonalComputers610Price in udComputingWorkstationsLaptopsPersonalComputersG. Bell. "Bell's Law for the Birth andDeath of Computer Classes."CACM, Jan tops0Internetof Things1950 1960 1970 1980 1990 2000 2010 2020ECE 24005101Handhelds210Volume in cm3610Y. Lee et al. "Modular 1mm3 DieInternetStacked Sensing Platform ."of ThingsJSSC, Jan 2013.1950 1960 1970 1980 1990 2000 2010 2020Course Overview18 / 33

What is Computer Systems Programming?Activity Trends in Computer Systems Programming Course LogisticsTrend towards IoT and Cloud w/ Novel HardwareRoughly every decade a new, smaller, lower priced computer class formsbased on a new programming platform resulting in entire new industriesCloud ice in dhelds210Volume in cm36G. Bell. "Bell's Law for the Birth andDeath of Computer Classes."CACM, Jan 2008.Internetof Things1950 1960 1970 1980 1990 2000 2010 2020ECE 2400510MinicomputersI Often requires low-latency,Personalhigh-throughput to meet overallComputersapplication requirementsMainframesHandheldsI Increasingly w/ specializedHW410Internet-of-Things3102I Very limited resource constraintsWorkstations110(e.g., energy,memory)Laptops0Requirescarefully managing10 IY. Leeet al. "Modular 1mm3 DieInternetStacked Sensing Platform ."theseto meet overallof ThingsJSSC,Jan 2013.resources1950 application1960 1970 19801990 2000 2010 2020requirementsI Increasingly w/ specialized HW10Course Overview18 / 33

What is Computer Systems Programming?Activity Trends in Computer Systems Programming Course LogisticsExample Application: Image RecognitionStarfishDogECE 2400Course Overview19 / 33

What is Computer Systems Programming?Activity Trends in Computer Systems Programming Course LogisticsMachine Learning (ML): Training vs. InferenceTrainingModelforward"starfish" ?backwardlabels"dog"errormany imagesforwardInference"dog"fewimagesECE 2400Course Overview20 / 33

What is Computer Systems Programming?Activity Trends in Computer Systems Programming Course LogisticsComputer Systems Programming in MLCloudComputingGoogle TPUI Training is done using theTensorFlow C frameworkI Training can take weeksI Google TPU is custom chipI High-level ML frameworks useC under the hoodMovidius Myriad 2I Custom chip for ML onembedded IoT devicesI Carefully crafted C/C MLlibraries for inferenceI Embedded control alsoin C/C InternetofThingsECE 2400Course Overview21 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics ECE 2400 / ENGRD 2140Computer Systems ProgrammingWhat is Computer Systems oftwareActivity: Comparing AlgorithmsTrends in Computer Systems ProgrammingCourse LogisticsECE 2400Course Overview22 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Computer EngineeringECE 2400 Within the Engineering CurriculumApplicationAlgorithmProgramming LanguageOperating SystemCompilerInstruction Set ArchitectureMicroarchitectureRegister-Transfer LevelGate LevelCircuitsDevicesTechnologyCS 1110 / CS 1112 Intro to ComputingECE 2400 Computer Systems ProgrammingECE 3140 Embedded SystemsECE 4760 Design with MicrocontrollersECE 4750 Computer ArchitectureECE 2300 Digital Logic & Computer OrgECE 2400 is also an ENGRD and thus satisfies theengineering distribution requirementECE 2400 can be an excellent way to generally incorporateprogramming into your non-ECE engineering curriculumECE 2400Course Overview23 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Course ObjectivesI describe a variety of algorithms and data structures and how toanalyze these algorithms and data structures in terms of time andspace complexityI apply the C/C programming languages to implement algorithmsand data structures using different programming paradigmsI evaluate algorithm and data structure alternatives and make acompelling qualitative and/or quantitative argument for one approachI create non-trivial C/C programs (roughly 1,000 lines of code) andthe associated testing strategy from an English language specificationI write concise yet comprehensive technical reports that describe aprogram implemented in C/C , explain the testing strategy used toverify functionality, and evaluate the program to characterize itsperformance and memory usageECE 2400Course Overview24 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Course StructureI Part 1: Procedural Programming. introduction to C; variables; expressions; functions; conditional & iterationstatements; recursion; static types; pointers; arrays; dynamic allocationI Part 2: Basic Algorithms and Data Structures. lists; vectors; complexity analysis; sorting algorithms: insertion, selection,merge, quick, radix; ADTs: stacks, queues, priority queues, sets, mapsI Part 3: Multi-Paradigm Programming. transition to C ; namespaces; flexible function prototypes; references;exceptions; new/delete; object oriented programming: C classes andinheritance for dynamic polymorphism; generic programming: C templates for static polymorphism; functional programming: C functorsand lambdas; concurrent programming: C threads and atomicsI Part 4: More Algorithms and Data Structures. trees (binary search trees; binary heaps); tables (lookup tables; hashtables); graphs (DFS, BFS, shortest path, minimum spanning trees)ECE 2400Course Overview25 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics zyBook: New Interactive Online TextbookECE 2400Course Overview26 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Programming AssignmentsI PA1–3: Fundamentals. PA1: Math functions. PA2: List and Vector Data Structures. PA3: Sorting AlgorithmsI PA4–5: Handwriting Recognition System. PA5: Linear vs. Binary Searching. PA5: Trees vs. TablesI Every programming assignment involves. C/C “agile” programming. State-of-the-art tools for build systems,version control, continuous integration,code coverage. Performance measurement. Short technical reportECE 2400Course Overview27 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Application-LevelSoftwareSystem-LevelSoftwareECE 2400Course Overview28 / 33

What is Computer Systems Programming?ECE 2400ActivityTrends in Computer Systems Programming Course Logistics Nick CebryRyan McMahonGuadalupe BernalMichael EgbuezeECE PhdECE MEngECE JuniorCS SeniorEric HallSonal ParabAnya PrabowoChidera WokonkoECE SeniorCS SeniorECE JuniorECE JuniorCourse Overview29 / 33

What is Computer Systems Programming?ECE 2400ActivityTrends in Computer Systems ProgrammingCourse Overview Course Logistics 30 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Frequently Asked QuestionsI I have not taken CS 1110 nor CS 1112, can I take this class?. We assume some basic programming experience, discuss with instructorI ECE Majors – How does ECE 2400 satisfy degree requirements?. ECE 2400 can count as your second ENGRD course. ECE 2400 can count as an outside-ECE technical elective. ECE 2400 satisfies the ECE advanced programming requirementI CS Majors – Can I use ECE 2400 in place of CS 2110?. Yes but you should probably take CS 2110I ECE/CS Dual Majors – Can I use ECE 2400 in place of CS 2110?. Absolutely! (NEW)I CS Minors – Can I use ECE 2400 in place of CS 2110?. Absolutely! (NEW)ECE 2400Course Overview31 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems Programming Course Logistics Frequently Asked QuestionsI Other Majors – How does ECE 2400 satisfy degree requirements?. ECE 2400 can count as one of your two required ENGRD courses. CS 2110 and ECE 2400 are in the same ENGRD category, so you cannotuse both of them as your two ENGRD coursesI Can I take both ECE 2400 and CS 2110?. Sure! (recall popularity and performance data)ECE 2400Course Overview32 / 33

What is Computer Systems Programming?ActivityTrends in Computer Systems ProgrammingCourse LogisticsTake-Away PointsI Computer systems programming aredeveloping software to connect the low-levelcomputer hardware to high-level, user-facingapplication software and usually requires carefulconsideration of performance and resourceconstraintsI We are entering an exciting era where computersystems programming will play a critical role inenabling both cloud computing and theinternet-of-thingsECE 2400Course Overview33 / 33

Computer Systems Programming Course Overview Christopher Batten School of Electrical and Computer Engineering . Operating System Gate Level Compiler Technology Application-Level Software? I High-level, user- . A Tale of Two Programming Languages Python Programming Language I Introduced: 1991 I Most of the machine details are

Related Documents:

Programming is the key word here because you make the computer do what you want by programming it. Programming is like putting the soul inside a body. This book intends to teach you the basics of programming using GNU Smalltalk programming language. GNU Smalltalk is an implementation of the Smalltalk-80 programming language and

Computer programming is the act of writing computer programs, which are a sequence of instructions written using a Computer Programming Language to perform a specified task by the computer. Computer Programming is fun and easy to learn provided you adopt a proper approach. This tutorial attempts to cover the basics of computer programming

Computer programming is the act of writing computer programs, which are a sequence of instructions written using a Computer Programming Language to perform a specified task by the computer. Computer Programming is fun and easy to learn provided you adopt a proper approach. This tutorial will take you through simple and practical approach while .

About this Programming Manual The PT Programming Manual is designed to serve as a reference to programming the Panasonic Hybrid IP-PBX using a Panasonic proprietary telephone (PT) with display. The PT Programming Manual is divided into the following sections: Section 1, Overview Provides an overview of programming the PBX. Section 2, PT Programming

Introduction to Computer Programming with R- FOR 6934 . 1 Overview . This is an online course that will help students to gain a basic understanding of computer programming. The course will be taught using R language, so you will learn to use R. However, the programming

Object Oriented Programming 7 Purpose of the CoursePurpose of the Course To introduce several programming paradigms including Object-Oriented Programming, Generic Programming, Design Patterns To show how to use these programming schemes with the C programming language to build “good” programs.

About this Programming Manual The PC Programming Manual is designed to serve as a system programming reference for the Panasonic Pure IP-PBX. It explains how to programme this PBX using the Maintenance Console software. The PC Programming Manual is divided into the following sections: Section 1, Overview Provides an overview of programming the PBX.

Business Studies Notes Year 9 & 10 Chapter 1 The purpose of Business Activity A NEED is a good or service essential for living (food, water, shelter, education etc.). A WANT on the other hand is something we would like to have but is not essential for living (computer games, designer clothing, cars etc.). people’s wants are unlimited. The Economic Problem results from an unlimited amount of .