Teaching Students to Learn to Learn
Mobile Phone Programming
Electrical and Computer Engineering
Hot or not?
Rate
me
Electrical and Computer Engineering
Hot or not?
Rate
me
Electrical and Computer Engineering
An old chestnut...
Catch a fish for a man, Feed him for a day.
David P. Murdock
Professor of Physics, TTU
Teach a man to fish, and he will ask, “Will salmon eggs be on the final?”
Electrical and Computer Engineering
How People Learn
• How people learn: Brain, mind, experience, and school. J. Bransford, National Academies Press, 2000.
• Essence: people learn differently
– Visual, oral, kinesthetic
– Different teaching methods work differently on different students
• Recommendation: Reflection
• Interestingly, lately:
– Some research shows that a pure approach to
only kinesthetic, visual, etc., learning, does not improve learning for people specifically tuned to that learning style
Electrical and Computer Engineering
Implications:
• Without reflection, deep learning is not really possible
• Focus for engineering education is on lifelong learning habits
• Consider then the following two strategies:
1. Anchor 4th year undergraduates to phone programming, in order to prepare them for potential careers in phone programming. Use a
course steeped in tutorials and demonstrations in order to allow them to understand the complex APIs and platform details, and to deliver a full-fledged application within the confines of a single term course. 2. Treat 4th year software engineering as a traditional software
engineering course, focused on the development and delivery of requirements, validated through design, test, and validation of
applications developed on the mobile phone platform of the student’s choice. Students are responsible for learning the details of their device and its APIs on their own.
Electrical and Computer Engineering
To Tutorial, or To Not To Tutorial
• A tutorial-based course is also hard for this reason:
$
Oh wait...that’s not right...
Electrical and Computer Engineering
To Tutorial, or To Not To Tutorial
• A tutorial-based course is also hard for this reason:
Why would anyone want to go to your lecture,
when Stanford’s are “free” on iTunes University?
Electrical and Computer Engineering
Other downsides of a tutorial approach
• Which phone platform are you going to pick?
– Tutorials take time to produce
– You absolutely do not have time to do tutorials for more than one device, while still covering enough academic topics to satisfy course requirements – What about next year, when all the APIs change?
– What about all the students who drop your course, because they have passionate feelings about one platform or another?
• Which computing platform will your students have?
– You need an Intel Mac to do iOS programming--period.
– You need a Windows (at least VMWare) machine to do Windows Phone – Android runs on (almost) everything
• Which phone platform will your students have?
– Your students will have a variety of phones, and you cannot constrain them to all run the same OS, so that all of your examples will work, even if they *did* all have the same Android/iOS/Windows platform.
Electrical and Computer Engineering
Learning how to learn: Why it works for the course
• If students are required to learn on their own how to develop the
specific details of their devices, then they have a higher sense of pride in their apps
• There are fewer artificial “expectations” gathered from seeing examples in class
– Hot shot students exercise their abilities to the max
– Students who are doing acceptable work are still able to produce applications that meet all requirements laid out
• Less of a temptation to clone instructor code
• It pays off!
– A deeper understanding of the technology, for job interviews
– Do not underestimate the power of holding a phone on your job interview, and showing it to a potential employer with your app on it!
Electrical and Computer Engineering
Back)by)popular)demand.)
Course Details: ECE 473-573 @ UA
• Offered yearly since the 90’s
• Titled, “Software Engineering Concepts”
• Since Spring 2010, the focus of the project has been mobile phones
– No need to get a new course through administrative bureaucracy
– No major issues if another faculty is tasked to teach the class, but is not interested in mobile phone programming
• Traditional syllabus for academic concepts
– Requirements specification, software lifecycle, testing, etc.
• Enrollment (at start of term) in last 4 offerings: Undergrad/Grad
– 2008: 9/3 (Autonomous Vehicles) – 2009: 5/3 (Mozilla Plugins)
– 2010: 12/12 (Mobile Phones) – 2011: 27/12 (Mobile Phones)
Electrical and Computer Engineering
Projects: Focus on Novelty
• Undergrads: goal is to develop something interesting (but maybe already done before)
– Teams of 3
– Work with instructor to refine ideas, and get advice on algorithms and validation criteria
– Avoid developing a game, as requirements are difficult to validate with tests
– Good project examples:
• Text and Drive Detector, Sheet Music Developer (with piano entry/MIDI Playback), Yelp-like localization engine, Nontraditional Campus Routing
Electrical and Computer Engineering
Graduate Projects: Focus on Research and Novelty
• Grads: Goal is to have novel idea, and novel approach
– Teams of 1 (to scale difficulty)
– Work with instructor to approve idea, responsible on their own for determining algorithms, literature review, market for application, etc.
– Focus on using sensors/information of the phone as the driver (again, not so much with games)
– Good project examples:
• Integrated GPS/IMU, Smart Thermostat Monitoring, Rapid Facial Recognition
Electrical and Computer Engineering
Electrical and Computer Engineering
Requirements
• Teams must produce requirements for their application, which are approved, and which become the contract for their grade
• Two tiers of requirements:
– B-requirements: satisfaction allows a maximum grade of “90” for project implementation
– A-requirements: satisfaction allows a maximum grade of “100” for project requirements
• If there is no test for a requirement, then the requirement is considered unmet!!!
– This is why games are terrible ideas for software engineering courses! – How do you test, “fun to play, with great graphics” ??
Electrical and Computer Engineering
Change in requirements
• Instructor can modify requirements at any time during the semester • Encourages regression testing, and modular design
Electrical and Computer Engineering
Electrical and Computer Engineering
Electrical and Computer Engineering
Course Results:
• Most students choose Android over iOS
– Undergrads: 6 (Android) vs. 3 (iOS) teams
– Grads: 6 (Android) vs. 2 (iOS) teams (note: in 2011 teams were 1 person) – This is additionally because, in a team environment, everyone must be
capable of running the same phone IDE -- rules out iOS for almost all teams, unless students are passionate about that OS
• (these below data points not verified by the instructor, but based on student feedback)
• Approximate a half-dozen students have informed that this course was instrumental in their getting an interview or a job
• Several students tell that they used their mobile phone app while on their interview to show an example of the things they did in their
coursework
• Approximately 12-15 apps developed by course students have been deployed to the app store for either iOS or Android
Electrical and Computer Engineering
Conclusions
• The lure of fame and shiny objects can make this course very popular • Resist the temptation to dive into phone development, at the cost of
abandoning classical SW ENGG topics
• Students demonstrate an ability to rise to the occasion when challenged to learn, which will pay off for them in later life
Thanks to Hussain Al-Helal, who served as TA for the Spring 2011 offering, and met frequently with students during the term in order to solve technical problems and offer advice on project topics, as well as provide various lectures on phone architectures and app lifecycles.