360 likes | 405 Views
Slides are up on the Web. ECE 297 Communication & Design. Hans-Arno Jacobsen & Ken Tallman Course syllabus: http://ece297.msrg.utoronto.ca/. http://ece297.msrg.utoronto.ca/. 2011 Edition!. Assignment 1 is posted Labs & Tutorials are starting this week! Team selection by Jan 15 th.
E N D
Slides are up on the Web ECE 297Communication & Design Hans-Arno Jacobsen & Ken Tallman Course syllabus: http://ece297.msrg.utoronto.ca/
http://ece297.msrg.utoronto.ca/ 2011 Edition! ECE 297
Assignment 1 is posted Labs & Tutorials are starting this week! Team selection by Jan 15th Slides are up on the Web ECE 297Communication & Design Hans-Arno Jacobsen & Ken Tallman Course syllabus: http://ece297.msrg.utoronto.ca/
Dr. Ken Tallman k.tallman@utoronto.ca • Engineering Communication Program, University of Toronto • ECE 297, 496 • MSE 290, 390, 490 • Tutoring Centre • Specific research interests • Team teaching • Service learning • Reflective learning • Argument in engineering design • Office Hours (SF B670) • Tue. 2-3pm • Thurs. 10am-12pm
Arno Jacobsen MIDDLEWARE SYSTEMS RESEARCH GROUP http://www.eecg.toronto.edu/~jacobsen • Research interests: Distributed systems & middleware • Middleware Systems Research Group @ msrg.org • Specific research projects • PADRES: Event Processing Platform • http://padres.msrg.org • eQoSystem: Declarative Distributed Applications • http://eQoSystem.msrg.org • AspeCtC • http://www.AspeCtC.net • R&D efforts, industry collaborations and experience • IBM Visiting Scientist • Principal Research Scientist at Yahoo! • Collaborations with Bell, CA, IBM, Sun … Office hours: After lecture or when door open (BA 4116). ECE 297 5
APS 105 & 244 background for 297 • Programming in C • Basic expressions, condition. loop statements • Arrays, strings, pointer variables • Dynamic memory allocation (malloc() and free()) • Searching and sorting algorithms • Binary search, insertion sort, selection sort, bubble sort, quick sort • Linked lists, (binary) trees, hash tables ECE 297
Lectures Labs + Tech Talks Tutorials News Group Best Effort ECE 297
Today’s agenda • Course objectives and high-level messages • Administrative remarks (marks, textbook, …) • The project and its milestones ECE 297
Objectives & messages 2011 Edition! ECE 297
Course objectives • Prepare your for real-world systems design career • Gain experience with working in teams • Improve communication skills • Learn by doing and gather development experience • Practice writing software (i.e., design documents, code, documentation, and test cases) • Perfect C systems programming skills • Gain experience with standard development tools ECE 297 10
Learn the tools of the trade • Writing good software takes lots of practice • You learn by doing and from experience • Getting it wrong and figuring out how things work is part of the experience • You need to learn to help yourself (man pages …) • Know your tools • Compiler, build environment, debugger, … • Building good software is an art • The Art of Unix Programming! ECE 297 11
Good communication skills are quintessential • Good communication is critical to success • Courses, degrees, promotion, entrepreneurship etc. • Learn to differentiate between the important and the unimportant • Focus & prioritize - divide & conquer • Use our online Course Reader • But note, you can’t know (read) everything ECE 297 12
Relevance of communication Skills • Summer job, PEY, … Masters, Ph.D., … • Reports, thesis, research papers, presentations, … • Project or product manager • Budgets, road maps, team meetings, demos • Engineer (hardware & software) • Patents, product specs., (code) documentation, memos, convince others about design (email) • Wikis, (micro) blogs, web pages, YouTube Channel • … and so much more … ECE 297 13
CE or EE? ECE 297
Even Hardware Design Requires Coding Circuit schematic for the serialization circuit FPGAs are one option to implement hardware. Above is Altera’s Cyclone II.
Administrativa 2011 Edition! ECE 297
Course organization I • Lectures • Tutorials (=meetings) with project managers • Labs are on T & W, 3-6 in GB243, GB251, SF2102 • Ad hoc technical talks by TAs during some lab hours • TA Lab & Tech talk schedule: http://ece297.msrg.utoronto.ca/T2012s/TeachingAssistants • Most work happens outside labs • Use labs for getting help & interaction with TAs • TAs are in labs during most scheduled lab sessions • The bulletin board runs as a best-effort resource by TAs via Blackboard (it does not replace the lab!) ECE 297 17
Course organization II • One project, four milestones and ten deadlines • Milestone also known as assignment • Two deadlines per milestone • Design document • Revised design document and code • Two exams (requiring preparation and deliverables) • 15 minute software demonstration midterm in lab • 30 minute final presentation • For exact dates, see the online course syllabus • ALL dates are already set! ECE 297 18
Mark composition • Assignments 40% • Design documents, memos, and code • Midterm 20% • Software demonstration • Final 35% • Presentation • Tutorial 5% • Marks are not per group but per individual! • Assignments are indirectly reflected in exams } Lecture, tutorial & lab content is covered in exam Q/A! ECE 297 19
Online Course Reader • Recommended online resources • Use them selectively (on a by need basis) • Keyed on needs identified in each assignment • Lectures will draw some material from: • “The Art of UNIX Programming” • Covers principles & anecdotes • Freely available online • Many concepts in the book apply in a non-UNIX world as well ECE 297 20
Recommended reference for C I like the book because it is concise and to the point. Kernighan, Brian W.; Dennis M. Ritchie; The C Programming Language. Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3. Or simply use the various online resources on C linked from our Course Reader. In your coding work with ANSI C. gcc is much more forgiving! Bonus marks in Assignment 2 require a tool that only processes ANSI C. ECE 297
Project & milestones 2011 Edition! ECE 297
The complete storage server After successful completion of Milestone 4 Application Client get(…) transaction{get(…), …, set(…)} S Config. Table Table set(…) Client … Network Table Table auth(…) Storage server Client query(…) Disk
You don’t have to start from scratch. The skeleton code Required reading! Application Client S Config. Client … Network Storage server Client 24
Storage server Milestone 1 Limited API Application Client get(…), set(…), … S Config. Table Table auth(…) Network Table Table One client at a time Storage server Tables are memory resident only Data schema is strings only “TorontoOntario-7.0“
Storage server Milestone 2 Limited API Application Client get(…), set(…), … S Config. Table Table auth(…) PKI Network Table Table One client at a time Data schema is strings only Storage server Disk (file I/O) Unit testing!
Storage server Milestone 3 Pieces likely effected by extensions Complete API Application Client get(…) S Config. Table Table set(…) Network Table Table One client at a time Storage server query(…) Extend with further data types (int, float, string) Disk
Storage server Milestone 4 Application Client get(…) Transaction {get(…), …, set(…) } S Config. Table Table set(…) Client … Network Table Table Storage server Client query(…) Disk
ECE 297 survival skills • Design is organizing and planning • Time spent on design is time well spent • Dual deadline model per milestone • Plans change • New requirements supersede prior design decisions • Learn to plan for and anticipate change • Plan for change • See & read: The Software Project page • Divide assignments into sub-tasks, conquer the project as a team ECE 297 30
More ECE 297 survival skills • Systems building is about understanding and managing trade-offs • You can’t get it right for every eventuality • What’s the common case? • Test, test, test and automate these tests • K.I.S.S.: Keep it simple stupid • Do not over-engineer or gold-plate your system ECE 297
Team selection Ken Tallman
The ECE 297 experience • Gather experience through learning by doing • Effective team work (collaboration in teams of 3) • Engineering design (research, problem solving) • Engineering communication (writing, presenting) • Software development (implementation, testing) • System evaluation (measurement, analysis) • Learn about and learn to use tools effectively • Versioning and concurrent development (svn) • Coding (gcc, acc, gdb, make etc.) • Unit testing (check) • Code documenting (doxygen) • Parsing (lex, yacc) • Data transformation (awk, sed) • Data graphing (gnu plot) ECE 297