Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.022 X-Spam-Evidence: '*H*': 0.96; '*S*': 0.00; 'programmer': 0.03; 'subject:Python': 0.06; 'subject:language': 0.09; 'yeah,': 0.09; 'cc:addr:python-list': 0.11; 'wrote': 0.14; '"in': 0.16; '(phd': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'programmer,': 0.16; 'subject:programming': 0.16; 'student': 0.16; 'language': 0.16; 'wrote:': 0.18; 'looked': 0.18; '(where': 0.19; 'thu,': 0.19; 'programming': 0.22; 'cc:addr:python.org': 0.22; 'regardless': 0.24; 'cc:2**0': 0.24; 'subject:/': 0.26; 'header :In-Reply-To:1': 0.27; '[1]': 0.29; 'am,': 0.29; 'dec': 0.30; 'statement': 0.30; 'especially': 0.30; 'message- id:@mail.gmail.com': 0.30; '(which': 0.31; 'explained': 0.31; 'languages': 0.32; 'run': 0.32; 'another': 0.32; 'something': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'really': 0.36; 'done': 0.36; 'url:org': 0.36; 'step': 0.37; 'that,': 0.38; 'does': 0.39; '12,': 0.39; 'called': 0.40; 'how': 0.40; 'took': 0.61; 'first': 0.61; 'times': 0.62; 'sum': 0.64; 'between': 0.67; 'walk': 0.74; 'saw': 0.77; 'dry': 0.84; 'mistakes.': 0.84; 'step.': 0.91; 'to:none': 0.92; 'differences': 0.93; '2013': 0.98 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=ZjferJFAViovTPzI29FGlJr/hhHLleMEdyEGphgOsvg=; b=L2btWHRwdEVCK4dsiCyQ3pPd++zUjzamzhd2Ry5mHRns+2XGZVdEqnGDj90tTxWYUx q73NKNZgFvV3tNfV2Yc9wdA7iQCAFOnwoqcuVwxGJ/cZLE8GUeEX8axxbx4EAqCwiWFh zAdIoHhDjnABErmfbpzyJlKqsSfd+imyOhYZelB+zZonTvJR3G/L012Mvoe/nlCFLuTB SJPIl4yBbEkl9omE+g+Iz0zE4oCgS0F1487OmsnbEVFr3LFUQUnMukw5LJF5l0aJocYc VB+Rf9WPJEtyhWTqJG9MR42DJAccjVc3ZrbQauX0oowfry1qSxswF51ciCEoUUvKUC54 B1/w== MIME-Version: 1.0 X-Received: by 10.68.212.163 with SMTP id nl3mr2658340pbc.25.1386778452294; Wed, 11 Dec 2013 08:14:12 -0800 (PST) In-Reply-To: <52A88C66.8050103@gmail.com> References: <201312090824.25211.gheskett@wdtv.com> <52A78F6F.3060507@stoneleaf.us> <52A88C66.8050103@gmail.com> Date: Thu, 12 Dec 2013 03:14:12 +1100 Subject: Re: Experiences/guidance on teaching Python as a first programming language From: Chris Angelico Cc: "comp.lang.python" Content-Type: text/plain; charset=UTF-8 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 27 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1386778455 news.xs4all.nl 2869 [2001:888:2000:d::a6]:52396 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:61594 On Thu, Dec 12, 2013 at 3:01 AM, bob gailer wrote: > One student (PhD in Physics) looked at X = X + 1 and said "no it doesn't". Yeah, which is why some languages (I first met it with Pascal) spell that as "X *becomes* X + 1"... but regardless of what you call it, there's a fundamental difference between algebra (where every line is a statement of truth) and imperative programming (which may change state as time progresses). What's called a "variable" in programming really can vary; in maths, it's really just an "unknown". This is a difference that, one way or another, just has to be taught. > Another wrote his first program. I took one look at it and saw the mistakes. > I explained how to walk thru the program step by step. He exclaimed "In that > much detail?". You mean a dry run [1]? Yes, can be tedious. Can also be very VERY valuable, especially if done verbally to another programmer, as a means of spotting differences between what the programmer thinks something does and what the language thinks it does. x = a * b + c "Set x to a times the sum of b and c." ChrisA [1] http://foldoc.org/dry+run