Group C (Why?) Discussion We are sales/marketing What is the glossy promo brochure like? Need one panel for each audience member. I say: do you want to write programs, solve problems, build things that matter? We have portable techniques and skills that will help you in any environment. Ras wants to consider the audience first: Audience: o colleagues, esp. people those in departments without any PL people - at research vs. those at teaching schools (including CSE) o adoptors. - those at small (other 1700 colleges). - will adopt whatever books/websites/ACM says - probably someone in an allied area (like formal methods, etc.) - Someone in dept. says they need a course, the assigned person will survey books and pick. o students - looking for cool thing. - resume building Want to convince people that PL should be in curriculum. (Matthias says we should arrange for people with interest to find us.) Objectives: Should we list objectives for students or not? Life-long learning in CS. Mattias wants to start with 3 things: type checker, type/memory safety, how to write an interpreter Want to draw connections to other, hot disciplines (Bioinformatics) For students: There are many languages, and you need to understand principles that underlie them if you're going to use them. Ras says he didn't have good luck with these arguments, at least with colleagues. They say they picked up what they needed by osmosis. But if that's true, then there is no need to take any course. Kathi: Difference between Aspirin and Vitamins --- what is their pain? Matthias: If students want to know more, then challenge them. Why does internet game X use stackless Python rather than just Python? (Continuations work well to model certain interactions.) Many more examples. [Matthias will produce such a list.] You can go through exercise of writing a thing in multiple languages. Prove that they don't understand things as deeply as they thought. Kathi: says her students want to build things. Pitch PL as an opportunity to build tools. Summary of her paper: Seems to work with about half. She is targeting people with programming experience, who typically think they can program well. Do functional programming in Scheme, build TurboTax or some other example, but think linguistically. So, argue that they can build projects as linguistic abstractions. Kathleen: people at ATT constantly build little languages. They will need to design languages. This is what master engineers do. Language design and interpreters will be used over and over again. Web programming involves many languages. Ras: Outsourcing: the dumb jobs go away, the smart ones stay. Show a bit of code and ask what it (or similar code) does in several languages. Point out flaws in existing languages. All languages/systems are flawed somehow. You don't always have what you need. You need to be able to program around these problems. (Use the hot language without getting burned.) Can't teach you the hot language because it will be different. Learn the next 700 languages. -- Build flexible software -- Build large systems with linguistic abstracions -- Students will have an opportunity to design a language -- One needs to know multiple languages Problem: we don't teach those languages -- Use the hot language without getting burned. How to navigate around pitfalls in a language -- Learn the net 700 PLs in one course. -- Understanding performance. Try to predict how different languages perform and how performance is related to semantics and data structures. -- Map/Reduce -- List of 15 examples -- Look at Google, YouTube. You want to do cool stuff like that? We can help. What is CS according to Google? Machine learning, cloud computing, ... (presumably some PL stuff :-) -- Slam, verifying device drivers. On developer's disk. Colleagues: Every protocol, DB schema, API *is* a language problem. Regular expressions in implementations don't match the theoretical semantics. Problems: Can't use beauty as an argument. There is competition and there are misconceptions. So what are misconceptions (be careful not to alienate our colleagues)? Need list of 15 here, too. - That design of Ruby, Python, etc. is what PL is about. - PL is dead because C++ or Java exists. - language > programming Students can't trace execution of visitor pattern in Java. - Point out bad properties of existing languages. - Solutions are algorithmic. Can then code them in any language. Recent successes: Web 2.0 (in addition to DB, mining etc.); map/reduce; security (would be better); MS annotations; anaysis tools; high-assurance (Airbus); defense (theorem prover). We are more about software engineering than algorithms. More safety. PL is central to computing. New languages are needed. Big challenge research problem that we can participate in, eg, parallel programming. We saw OO development in response to growth of software systems. It's time for the next thing targeting parallelism. Turing awards recognize contributions --- lots of language-based awards. (Get statistics from Ras.) I thought we should address significance of big challeng problems, eg, in a capstone course. Life-long learning for students. What you need 5, 10 years down the road in your career is what we should focus on. We provide intellectual tools. Programs underly every artifact. PL makes you a better programmer. SOS/term rewriting are state of the art in program specification. Prestige comes from pushing students to grad school. Our colleagues have a model, and prepare students for, a world where one solves small problems. Languages support large systems or systems used by lots of people. Can better serve students with PL.