Presentation is loading. Please wait.

Presentation is loading. Please wait.

Administrative Items ECE 297.

Similar presentations


Presentation on theme: "Administrative Items ECE 297."— Presentation transcript:

1 Administrative Items ECE 297

2 Teams Have team? No team yet?
See course website for your CI & TA and rooms Go to your regular tutorial time Meet your CI in the assigned room (see course web site) You and your CI will choose a time for future meetings No team yet? Go to your regular tutorial time and meet Dr. Tallman in Mon. Jan 23, 1-3pm, HA409 Wed. Jan 25, 9-11am, BAB025 Thurs. Jan 26, 3-5pm, SS2104 Dr. Tallman will group into teams Enter team through the team selection web page

3 StreetSegment: Curve Points
Not all StreetSegments (city blocks) are straight If not straight, have CurvePoints  list of (lat,lon) points followed between intersections

4 libstreetdatabase: Streets & POI
group of StreetSegments unique index 0 to getNumberofStreets()-1 non-unique name (e.g. “Yonge St.”) Points of Interest location non-unique name (e.g. “Tim Horton’s)

5 libstreetdatabase: Extra Features
Feature outlines Ponds Buildings Parks, … Not used in milestone1 OSMID 64-bit, globally unique ID for any item 0 to ~1019 Use to look up more “raw OSM” data

6 Milestone 1 List of functions to implement in m1.h
Comments say what each should do Good practice: documentation is in your code! Header file: comments say how to use Not how it is built Detailed unit tests in ece297exercise These give the detailed specification “Test-driven development” Most test functionality Some also test speed  too slow  fail One runs valgrind to check memory OK

7 Milestone 1 Unit Tests in main () that is made by unit tests
// Load anything you want here load_map (“toronto_canada.streets.bin”); unsigned inter_id = find_closest_intersection (my_position); if (inter_id != 22333) { <your code failed the test, record it> } // lots more tests // clean up here; all memory should be de-allocated and the // map should be closed/unloaded close_map ();

8 load_map What should I do in load_map ()? 3 basic approaches
// Load anything you want here load_map (string map_name); What should I do in load_map ()? 3 basic approaches load_map does nothing Implement all your higher-level api calls by calling lower level api (libstreetdatabase api) directly Stateless Often easier to code & debug But will be too slow for some calls load_map builds everything you could ever want Never have to call lower-level api again You have full control  make beautiful, fast data structures

9 load_map Blended approach load_map creates some new data structures
// Load anything you want here load_map (string map_name); Blended approach load_map creates some new data structures Use them for api calls that need them for speed Call lower level api when it is fast enough Last 2 approaches are reasonable Good approach: Code in simplest way (usually option 1) Get it working Re-code using approach 2 or 3 where not fast enough load_map also speed tested Can’t be too slow But time limit pretty loose (several seconds)  you can load a lot

10 Clean Up main.cpp (made by unit tests) // Load anything you want here load_map (“toronto.bin”); int id = find_intersection_id_from_name (“Yonge & Bloor”); if (id != 22333) { <your code failed the test, record it> } // lots more tests // clean up here; all memory should be de-allocated close_map (); ece297exercise runs valgrind on a load_map(), use, close_map() test Must free all memory or will lose marks

11 Automatic Memory Checking
Memory checking: valgrind slowdown ~10x Testing: want fast & thorough Small test case: almost as thorough as big St. Helena

12 load_map  How Do I Get Its Data?
main.cpp (made by unit tests) // Load anything you want here load_map (“toronto.streets.bin”); unsigned inter_id = find_closest_intersection (my_position); if (inter_id != 22333) { <your code failed the test, record it> } // lots more tests // clean up here; all memory should be de-allocated close_map (); ?  global variable

13 But Aren’t Global Variables Bad?
Yes, if you overuse them E.g. could pass argument but use global variable to avoid typing! But almost all programs have some Or something very similar Limit their number Group related data into classes (e.g. StreetGraph?)  organizes data and avoids lots of namespace pollution StreetGraph find_closest_intersection (my_position); load_map() close_map()

14 Global Variable Pitfalls
Undisciplined use  hard to determine function inputs and outputs StreetGraph find_closest_intersection (my_position); find_ … Only read global variables here! load_map() close_map() Only change global variables in load & close More coding / milestone 1 tips in 2nd hour of tutorial this week (GB 304/BA 1180)

15 Team Formation & Performance
ECE 297

16 Four Stages of a Team By Bruce Tuckman, Psychology Professor Forming
Picking team, getting to know each other Storming Figuring out who does what & how, often contentious Norming Members understand and accountable for their roles Performing Only high-performance teams reach this stage; continuous improvement, open discussion, high trust You are here! Want to get here (or beyond)

17 High-Performing Teams
Open discussion Tell it like it is! Don’t let things fester But be constructive Accountability Take responsibility for your part of the project Own your mistakes, delays, etc. and find a solution Transparency If you’re behind or some of your code doesn’t work, say so clearly Don’t hide or evade Trust Helped by all the above Plus spend time working together (in person!)

18 Social Norms of Effective Teams
NY Times: Google Research on Teams Equal speaking Over day, members speak roughly equally All engaged, all feel valued 2. On average, high social sensitivity Can read emotions of other team members Can tell when someone feeling left out, …

19 Team Status Meeting Two per week: 1 with CI & 1 with TA
Typical industry practice: weekly team meeting With written status (usually wiki) Good meetings help make good teams Show transparency and accountability Concise statement of what is done and not done Clear (single person) ownership of various tasks With a target completion date Leverage the CI & TA’s expertise Mentors are valuable  ask questions

20 Team wiki Team’s memory and to-do list Can have lots of detailed data
Key data What’s next, with target date & owner for each What’s done, and what was reassigned / delayed Can have lots of detailed data If so, add a summary for weekly CI & TA meeting Should have received with initial password Change it! Your wiki: for your team, TA and CI Wiki Quick Start Guide Go to 297 wiki


Download ppt "Administrative Items ECE 297."

Similar presentations


Ads by Google