I guess you're not interested in teaching languages appropriate to HPC
implementations, Owen.  C++ and MPI...

--Doug

On Sat, Jul 31, 2010 at 4:47 PM, Owen Densmore <o...@backspaces.net> wrote:

> Given the constraints and goals, my approach would be to teach that there
> are many languages in different environments, but that they share many
> features (loops, conditionals, types, ...).
>
> Then I'd pick the following areas:
> Command-line programming: Bash & Python
> File/Text manipulation, ssh login, regular expressions, commands
> System Programming: Java
> objects, GUI, Applets, types
> Web Server Programming: PHP
> client - server networking architecture, http requests, how it won over
> java
> Web Client Programming: Javascript
> DOM, AJAX, html, css
>
> That may look like a lot, but it covers most programming environments and
> goals.  And the design issues would pop out when discussing the environments
> in which these languages excel.
>
> I would NOT go into a lot of detail (clearly!).  Instead I'd generalize
> what they have in common, and possibly use cheat-sheets which have 80% of
> the important syntax.
>
> The bash/python initial work would also have a lot of pragmatic elements:
> how to login and use a remote unix box (bash), and the historic evolution of
> awk, perl, and now for many, python.  I'd note that python does not have a
> native gui (but is considered the best "pseudo-code" by theoreticians -- see
> sagemath.org)  thus the transition to java would have even more meaning.
>  The two web languages would clarify the tcp/ip world we live in and most do
> not understand.
>
> The goal is to leave the students with a language framework from which they
> can choose how to proceed in future work.
>
>     -- Owen
>
>
> On Jul 31, 2010, at 3:22 PM, Ed Angel wrote:
>
> Greetings from a wet Alaska.
>
> I agree with Dave and I’d like to add a few more comments about languages,
> programming and design that are colored by the difficulties of teaching
> computer science and engineering in large universities.
>
> Most academic computer scientists would agree with Owen about the
> advantages of teaching the first course using Scheme. Many schools tried it
> and it was a failure. The prime reason was that almost no schools have a
> student body as good or as uniform as MIT. In a typical state university,
> the first programming course known as CS 1 is taught to a very diverse
> group, including students who intend to major in CS, all branches of
> engineering, math, business and  a lot of the sciences. Most of them will
> never take another CS course so it’s not clear that a single Scheme course
> is the best for all of them. What makes things more complex in NM (and I
> think this is typical of other states) is that you have very few students
> who start in a program and stay in it for four years. When you get to the
> second class, almost half the students took CS 1 elsewhere (CNM, some other
> community college, NMSU, NMT). If UNM were to use Scheme, it’s highly
> unlikely that any of the other would follow and in the case of most
> community colleges would probably have great difficulty in staffing such a
> course.
>
> What further complicates the picture is the state mandates articulation.
> Hence, each school must accept the CS 1 that the others teach and cannot
> require students who transfer in to retake CS 1. This is a huge problem for
> students even when the two CS 1 languages were C++ and Java. It would be
> impossible if one school were using Scheme and not the others. At UNM, we
> don’t list a specific language as a prerequisite for the second CS class
> which is taught in Java. However, most of the CS majors take the first class
> is in Java although there is a python section. The engineers mostly take a
> first course using the programming language in Matlab. The computer
> engineers take the Java version of CS 1 and then quickly switch over to C
> and C++.
>
> Even the better schools are driven somewhat by the market. But I think once
> you see why Scheme (or equivalent) doesn’t work, there are no perfect
> choices. The market push for Java is there in some industries and not
> others. A lot of the market still wants C++ but it is a terrible teaching
> language (and a lot of industry sees C++ as the lesser of evils, not as the
> language they would like to have). Although some schools focus on a single
> language others give superficial knowledge in many.
>
> The accrediting boards were aware of these issues and rather than requiring
> a particular language in CS 1, defined the requirements as proficiency in
> one language and familiarity with at least one other paradigm. As well
> intentioned as this may be, it’s not clear that is has worked out as hoped.
> At UNM, students become proficient at Java, learn both C and Scheme at the
> second level and eventually study logic and functional programming. But in
> the end most of them become proficient in the language they started which in
> the case of Java can be a problem for them in the job market depending on
> the industry and to working in areas such as graphics, game technology and
> CAD. But if we still used C++, they would have problems with other areas and
> other industries.
>
> To get back to some of the issues Owen and David raised, the goal should be
> to teach computational thinking and design. If that is the case, starting in
> Scheme would be better than what we do now. When we teach it as a second
> level course, it doesn’t really get used nor are the ideas adequately
> reinforced by later courses. It’s an aspect of a much larger problem that is
> a focus of those of us concerned with the problems the country is facing
> with STEM education, namely the replacement of fundamental ideas of computer
> science with a focus on what is often called computer literacy. In higher
> ed, it manifests itself as stressing proficiency in some programming
> language rather than in the underlying principles. In K-12 education, where
> the problem is far more serious, computer science ideas have pretty much
> vanished from the curriculum and from teacher training. In NM, very few
> schools even teach a CSs course. In those that do, the course is designed to
> prepare students for the AP Computer Science exam which has become a Java
> proficiency exam. That presents computer scientists with a difficult dilemma
> in that while they are opposed to the course, they are hard pressed to
> oppose the only “computer science” in the schools.
>
> Finally there is the design question. I spent a lot of time my last few
> years at UNM trying to deal with design in the CS curriculum. At the college
> level there are serious issues of whether you can teach design and if
> colleges and universities have faculty who can do it. A more serious issue
> is the siloing that characterizes most universities. Engineering schools
> tend to think they own design but the reality is that design has gotten
> crowded out of the engineering curriculum by the increase in the new
> material that most departments feel they have to teach. Accrediting agencies
> now require capstone courses which try to get some design back in the
> curriculum but it’s not the same as having design integrated throughout the
> curriculum. In my experience the one school that truly understands design
> and is good at teaching it is Architecture. Studio artists are also very
> good at design and problem solving but at UNM, the College of Fine Arts
> doesn’t see design has part of their curriculum. It will be interesting to
> see what happens with the new College of Santa Fe. As for CS, it always
> seemed to me that design was fundamental to any programming course and to
> our overall program. But that view met vociferous objections from the
> engineering faculty who believe that “design” is what separated engineering
> from sciences including computer science.
>
> Sorry for the ramble. The sun just came out and I’m going back on vacation.
>
> Ed
>
> On 7/29/10 1:45 PM, "Prof David West" <profw...@fastmail.fm> wrote:
>
>  Owen,
>
> Speaking as an academic, I agree with you that too many schools believe
> they need a single language and are driven by pure market conditions - i.e.
> what language will look best on a graduate's resume.
>
> In my program we require students to demonstrate proficiency (write
> thousands of lines of code) in four languages: a scripting language, a
> procedural language, a declarative language, and an object language (and no,
> Java is not even close to being an object language). [We have not decided if
> functional is a fifth group or a variation on procedural or declaritive as
> far as the "thinking paradigm" required.]   Which language is chosed within
> those groups is mostly irrelevant, except as it best suits a specific
> problem domain (.e.g C or C++ for telecom).
>
> Interestingly, the only empirical research of which I am aware as to what
> is a Good Answer - was done at Carelton (in Canada):  Their research showed
> that students learning Smalltalk as their first language picked up a second
> language (did not matter if it was procedural or declarative) about 50%
> faster than if the first language was Pascal (remember that one?) - and
> Pascal was created specifically to be a good teaching language.  Conversely
> if students took a procedural (C, Java, Pascal) as their first language, it
> took them almost 100% longer to become proficient in Smalltalk and about 60%
> longer to become proficient in Lisp.  COBOL was an interesting anomaly - If
> COBOL was the first language, Smalltak came much easier, but Lisp was still
> a big cognitive leap.
>
> The Carleton research also showed that Smalltalk-First led to a deeper
> understanding of programming in general.
>
> The biggest drawback to Smalltalk-First arises from the fact that, in
> Smalltalk, you never use things like nested or Boolean IFs and no loops and
> cyclomatic complexity was an order of magnitude lower on average - so moving
> to a different language almost always felt like descending into swamp of
> tedious and verbose complications.
>
> [[ While I am being opinionated - Design (decomposition and distribution of
> knowledge and behavior), not programming language, is the real key - proper
> design makes the coding almost trivial.  (I am in the midst of a hot and
> heated argument with my colleagues in the Software Craftsmanship (they are
> all about code and programming) movement about this right now - and doing a
> presentation to about a hundred professional developers in Mpls next week.
> ]]
>
> dave west
>
>
>
>
============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to