Alexey Onufriev
Departments of Computer Science and
Physics
Virginia Tech
Copyright © 2007-2011
• Problem solving is not an innate ability (you either have it or you don’t). It’s a skill that can be learned.
• Make you a better problem solver in general
– Understand how you operate
– Recognize limitations and pitfalls
– Learn general techniques that you can apply to solve problems
– Learn how to form successful teams and function within a team.
• Improve your ability to successfully complete the CS degree
• Learning a specific skill (such programming) is
NOT the goal
• You want to occupy upper levels of professional hierarchy
• You want to go to graduate school
• You want to be able to find a high-end job even in adverse conditions
• You want to learn how to function within a team
• You want to work for highly creative companies such as Google
• want to be a low end, specialized programmer (perhaps a very good one at that).
• just want to learn specific sets of skills.
• are certain you are not going to grad. school
• are sure there will always be a job waiting for you in a specific area.
• Can’t stand it when class does not strictly follow a textbook.
• Hate any whiff of open-endedness in problems (every detail must be specified)
Salaries in the outsourcing world
http://cjres.oxfordjournals.org/content/early/2012/09/15/cjres.rss012.abstract
We designed this course in hopes of:
• Improving students ’ ability to design
• Improving students ’ ability to develop algorithms
• Improving students ’ ability to plan (projects)
• Improving students ’ performance on tests
• Improving students ’ analytical abilities
• Improving students ’ ability to “ argue ” (proving)
• Improving students ’ ability with personal interactions
1. Problem solving is a skill (it can be learned). It is not an innate ability.
2. Problem solving is fundamentally about attitude and effort (the “ problem-solving stance ” ).
3. The problem-solving stance isn ’ t something that you can just “ turn on ” when you need it for a test, etc. You have to live it – and successful people do just that.
• Learn about yourself
• Learn problem-solving techniques
• Solve a wide variety of problems, so as to learn how to apply the specific heuristics
(techniques. E.g. “ simplify ” )
• Understand errors typically made by poor problem solvers. Learn to avoid.
• Learn how to work as part of a team
• Problems “ in the small ” : Puzzles, word problems, math problems (simple math), algorithmic problems (will very require basic programming skills, but focus is NOT on programming)
– Heuristics
• Problems “ in the large ” : “ Real life ” problems
– A whole “ pipe-line ” . Requires a task force of 4-5 people working in sync. 1-2 in-class projects + 1 homework larger project that uses what we have learned.
• Interpersonal problems
– Take a “ problem-solving ” stance
– Team work
• Whimbey Analytical Skills Inventory (WASI)
• Myers-Briggs Personality Type (Homework
Assignment 1) http://www.humanmetrics.com/cgi-win/JTypes1.htm
http://similarminds.com/jung.html
(It is good to do a couple of different MB tests, results vary somewhat. Then, read the descriptions.)
• Soloman & Felder Index of Learning Styles
• Thomas-Kilmann Conflict Mode Instrument
Course website: http://courses.cs.vt.edu/cs2104/Spring12Onufriev/
• Final ~ 150 points
• Project ~ 150
• Homeworks ~ 200
• Quizzes ~ 150
• In-class ~ 50-100
• “Activity”
• Extra Credit
year: 09 ‘10 total score grade # of people
>90 A 2 9
85-90 A6 5
<50 F 2 0
60-65 C 2 2
65-70 C+ 3 1
80-85 B+ 8 7
75-80 B 7 8
70-75 B7 2 your total score = 100*(your actual total)/(your max possible without items dropped as discussed in class).
NO CURVES or any other funny business.
• Google/Microsoft real interview questions