Re: [Tutor] Learning Objectives?

2017-03-01 Thread Alan Gauld via Tutor
On 01/03/17 10:09, Leam Hall wrote:

> I see computer science as a science that calls upon our creative nature 
> to produce excellence. Adding constraints like secure coding and TDD 
> push us to even greater artistic expression. Lack of constraints gives 
> us the current standard of non-performant and insecure code.

I'd argue that most of that is software engineering.
Computer science is the study of computation, ie how we
compute stuff. Software engineering is about the practical
application of that to building things.

It's like the relationship between physics and traditional
engineering (Electrical, Mechanical, Civil etc). Engineers
study the basic science but they also study topics like
design, ethics, law, economics/accounting and marketing.

> Hence my desire for the basic tools of science and engineering. What do 
> I need to know to produce solid code in a team of solid coders.

It's interesting how these things seem to come in groups.
Yesterday, after sending my initial response I had lunch
with an old friend who is working on a consultancy on the
future of Computer Science teaching here in Scotland. We
had a long chat about what should be in/out of a modern
CS curriculum.

That discussion made me rethink the need for lists of
criteria because college courses need to do just that.
And as we brain-stormed lists of topics we naturally
categorized some as mandatory core subjects (eg discrete
math, finite state machines, data structures, algorithms etc)
and others as optional modules (AI, machine architectures etc).

Somebody already suggested looking at the online college
courses for ideas, so I guess I'd now second that as
probably the best available source.

One other place to look is the British Computer Society's
web site. I don't know if it's still there but they used
to have an Industry Model which included definitions
of knowledge areas and levels for different roles
(programmer, analyst, software engineer, architect etc)
It's now apparently called Skills Framework for the
Information Age.(SFIA)

Wikipedia has this page as a starter:
https://en.wikipedia.org/wiki/SFIAPlus

HTH
-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-03-01 Thread Leam Hall

On 02/28/17 05:24, M Hashmi wrote:

Coding is an artthat helps you craft beautiful things in digital world.
As beginner it's pretty natural to confuse about which learning curve can
benefit you most in future.



I see computer science as a science that calls upon our creative nature 
to produce excellence. Adding constraints like secure coding and TDD 
push us to even greater artistic expression. Lack of constraints gives 
us the current standard of non-performant and insecure code.


Hence my desire for the basic tools of science and engineering. What do 
I need to know to produce solid code in a team of solid coders.


Leam
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-28 Thread Fred Stluka
   On 2/27/17 9:57 AM, leam hall wrote:

 On Mon, Feb 27, 2017 at 9:28 AM, Alan Gauld via Tutor [1]
 wrote:


 On 27/02/17 10:44, Leam Hall wrote:

 Is there a list of Python skill progression, like "Intermediates should
 know  and Advanced should know ?" Trying to map out
 a well rounded study list.

 I'm not aware of such a list, and I'm not sure it's of much value.
 Better to just learn what you need and use it. When you need
 to learn more, learn it. The worst thing you can do is study an
 arbitrary list of topics that don't have any relevance to
 the problems you need to solve!

 ...

 When I was coming up as a Linux guy I took the old SAGE guidelines and
 studied each "level" in turn. It was useful for making me a well-rounded
 admin and helped me put off some higher end stuff I wasn't really ready
 for.

 ...



   I agree with Leam.  If anyone has such a list, I think many of us
   would be interested to see it.

   Personally, I'd already been a programmer for 30 years when I
   first started using Python and Django.  I learned them in bits and
   pieces, as needed for a 4 year project.  I never took time to read
   a comprehensive book on either topic.  Also, they both evolved
   quite a bit during those 4 years, with many new and changed
   features.  So it's possible that I've completely overlooked some
   relatively basic features.

   If there were such a list, I'd quickly scan the "basic" section to
   what I may have missed.  Then, I'd scan the more advanced
   sections to what else exists.

   It would also be useful when teaching Python to someone else,
   to have some guidance about which language constructs are
   used most often.

   As a quick straw man, here's a syllabus I started whipping up
   recently for a Python and Django class I was asked to teach.
   - [2]http://bristle.com/Courses/PythonDjangoIntro/syllabus.html

   It has 5 main sections:
   - Python
   - Django
   - Possible Advanced Python Topics
   - Possible Advanced Django Topics
   - Possible Related Topics

   The class would be ten weeks, with 6 hours of lecture and 4
   hours of lab per week, so I'd hope to cover all of the 1st 2
   sections, and perhaps some/all of the last 3 sections.

   Feel free to comment on errors, omissions, misplaced items, etc.

   Enjoy!
   --Fred

   --

   Fred Stluka -- [3]mailto:f...@bristle.com -- [4]http://bristle.com/~fred/
   Bristle Software, Inc -- [5]http://bristle.com -- Glad to be of service!
   Open Source: Without walls and fences, we need no Windows or Gates.

   --

References

   Visible links
   1. mailto:tutor@python.org
   2. http://bristle.com/Courses/PythonDjangoIntro/syllabus.html
   3. mailto:f...@bristle.com
   4. http://bristle.com/~fred/
   5. http://bristle.com/
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-28 Thread M Hashmi
Coding is an artthat helps you craft beautiful things in digital world.
As beginner it's pretty natural to confuse about which learning curve can
benefit you most in future.

If I were you I would go with simple approach. I would choose best of the
best software available and start building its source by looking at it. Bit
by bit piece by piece it would help you to understand a pre-built
application.

Lets assume as you've posted in Django group so you might be interested in
web development. Pick a best project and start writing your own guide for
yourself. The best one I came across is django-oscar. Start building it's
replica and document each step in the process for yourself. You can consult
the django's own docs as well as django-oscar's documentation for
understanding what the function/class is about.

I bet that in a single month you will be able to build a semi-dynamic site
yourself. In maximum 3 to 4 months you can really do wonders.

Hope it helps.

Regards,
M

On Tue, Feb 28, 2017 at 1:39 AM, Aaron Myatt via Tutor 
wrote:

> Just my humble contribution: I rather appreciated this fellows intermediate
> python tutorial series:
> https://youtu.be/YSe9Tu_iNQQ?list=PLQVvvaa0QuDfju7ADVp5W1GF9jVhjbX-_
>
> Though I would argue some other topics, like context managers, would also
> be worth including in his list.
>
> On 28 Feb 2017 9:15 a.m., "Alan Gauld via Tutor"  wrote:
>
> > On 27/02/17 14:57, leam hall wrote:
> >
> > >> I'm not aware of such a list, and I'm not sure it's of much value.
> > >> Better to just learn what you need and use it. ...
> >
> > > When I was coming up as a Linux guy I took the old SAGE guidelines and
> > > studied each "level" in turn. It was useful for making me a
> well-rounded
> > > admin and helped me put off some higher end stuff I wasn't really ready
> > > for.
> >
> > Its an individual choice, so if it works for you don't let
> > me stop you :-) But I still don't know of any such list.
> >
> > > documentation. It's sort of the "if we hired a junior or senior coder,
> > what
> > > basics would we want them to know?"
> >
> > That's the thing. I've never, in 40 years in IT, seen
> > anyone advertise for a junior programmer. Just doesn't seem to
> > happen. It's a bit like having a headache and asking for a
> > weak pain killer...
> >
> > There are places offered for programming apprenticeships,
> > but they assume you are starting from scratch.
> >
> > --
> > Alan G
> > Author of the Learn to Program web site
> > http://www.alan-g.me.uk/
> > http://www.amazon.com/author/alan_gauld
> > Follow my photo-blog on Flickr at:
> > http://www.flickr.com/photos/alangauldphotos
> >
> >
> > ___
> > Tutor maillist  -  Tutor@python.org
> > To unsubscribe or change subscription options:
> > https://mail.python.org/mailman/listinfo/tutor
> >
> ___
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-28 Thread Leam Hall

On 02/27/17 20:12, Alan Gauld via Tutor wrote:

On 27/02/17 14:57, leam hall wrote:


I'm not aware of such a list, and I'm not sure it's of much value.
Better to just learn what you need and use it. ...



When I was coming up as a Linux guy I took the old SAGE guidelines and
studied each "level" in turn. It was useful for making me a well-rounded
admin and helped me put off some higher end stuff I wasn't really ready
for.


Its an individual choice, so if it works for you don't let
me stop you :-) But I still don't know of any such list.


Understood. However, think about the issue from a newbie perspective.

1. The Python Tutor e-mail list helps with questions when someone can 
frame a question.


2. Books or videos like "Learning Python", "Learn Python the Hard Way", 
or the Coursera/EdX classes cover what the publisher felt could be 
covered in a profitable way.


3. Books like "Python Projects" can help someone go from absolute newbie 
to being able to do useful stuff. 


When I was learning Ruby I put section dividers in a 3 ring binder and 
had one section for each of the topics in the Pickaxe book. That way as 
I learned and relearned things could gel a little better. I have an old 
copy of "Learning Python" and will break out the section dividers today.


I don't know about anyone else, but I have a bad habit of jumping in way 
over my head and getting frustrated when I can't make things work. By 
setting a sequential list it helps prevent that; learning Objects is 
much easier when one understands functions.



documentation. It's sort of the "if we hired a junior or senior coder, what
basics would we want them to know?"


That's the thing. I've never, in 40 years in IT, seen
anyone advertise for a junior programmer. Just doesn't seem to
happen. It's a bit like having a headache and asking for a
weak pain killer...

There are places offered for programming apprenticeships,
but they assume you are starting from scratch.



The PHP community has a Mentoring thing (https://php-mentoring.org/), 
and I would assume there are many open source Python projects that would 
be willing to bring a junior in and help them grow. Growth and 
contributing seem to go hand in hand. It's easy to read a book and think 
you "know" a language. It's more challenging when you're in the lab with 
seasoned programmers and you're pushed to produce better and better code.


It's a lot nicer for the seasoned programmers if you don't have to be 
convinced to write tests or taught what an object is.  :)


The "junior" level is more a gift to the seasoned programmers; someone 
who can do those basics has proven a willingness to learn coding past 
the "type what's in the book" phase. Of course, one must go through 
junior to get to senior.


For those interested, GIAC has a Certified Python Programmer. It focuses 
on using security tools, which is GIAC's forte.


http://www.giac.org/certification/python-coder-gpyc

Does a certification make you a better coder? Not really, there are lots 
of uncertified (but probably certifiable!) expert coders out there. 
However, certifications can help in the job search and it's nice to get 
paid for what you enjoy.


Leam




___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-28 Thread Aaron Myatt via Tutor
Just my humble contribution: I rather appreciated this fellows intermediate
python tutorial series:
https://youtu.be/YSe9Tu_iNQQ?list=PLQVvvaa0QuDfju7ADVp5W1GF9jVhjbX-_

Though I would argue some other topics, like context managers, would also
be worth including in his list.

On 28 Feb 2017 9:15 a.m., "Alan Gauld via Tutor"  wrote:

> On 27/02/17 14:57, leam hall wrote:
>
> >> I'm not aware of such a list, and I'm not sure it's of much value.
> >> Better to just learn what you need and use it. ...
>
> > When I was coming up as a Linux guy I took the old SAGE guidelines and
> > studied each "level" in turn. It was useful for making me a well-rounded
> > admin and helped me put off some higher end stuff I wasn't really ready
> > for.
>
> Its an individual choice, so if it works for you don't let
> me stop you :-) But I still don't know of any such list.
>
> > documentation. It's sort of the "if we hired a junior or senior coder,
> what
> > basics would we want them to know?"
>
> That's the thing. I've never, in 40 years in IT, seen
> anyone advertise for a junior programmer. Just doesn't seem to
> happen. It's a bit like having a headache and asking for a
> weak pain killer...
>
> There are places offered for programming apprenticeships,
> but they assume you are starting from scratch.
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
> http://www.amazon.com/author/alan_gauld
> Follow my photo-blog on Flickr at:
> http://www.flickr.com/photos/alangauldphotos
>
>
> ___
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-27 Thread Alan Gauld via Tutor
On 27/02/17 14:57, leam hall wrote:

>> I'm not aware of such a list, and I'm not sure it's of much value.
>> Better to just learn what you need and use it. ...

> When I was coming up as a Linux guy I took the old SAGE guidelines and
> studied each "level" in turn. It was useful for making me a well-rounded
> admin and helped me put off some higher end stuff I wasn't really ready
> for.

Its an individual choice, so if it works for you don't let
me stop you :-) But I still don't know of any such list.

> documentation. It's sort of the "if we hired a junior or senior coder, what
> basics would we want them to know?"

That's the thing. I've never, in 40 years in IT, seen
anyone advertise for a junior programmer. Just doesn't seem to
happen. It's a bit like having a headache and asking for a
weak pain killer...

There are places offered for programming apprenticeships,
but they assume you are starting from scratch.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-27 Thread Mats Wichmann
On 02/27/2017 07:57 AM, leam hall wrote:

> When I was coming up as a Linux guy I took the old SAGE guidelines and
> studied each "level" in turn. It was useful for making me a well-rounded
> admin and helped me put off some higher end stuff I wasn't really ready
> for.
> 
> Things like Testing and documentation are useful, but only learning what
> seems to bee needed for this one project seems harder for the new coder.
> Most of us didn't know TDD was useful until we started doing it. Same for
> documentation. It's sort of the "if we hired a junior or senior coder, what
> basics would we want them to know?"
> 
> Thanks!
> 
> Leam

Just as a suggestion,

I think if you look at the curriculum of various training courses,
books, online tutorial series you will get each author's view of what a
logical progression is. There are probably as many different
progressions as there are people expressing an opinion, but it seems to
me the flow is at least roughly aligned when I glance at these from time
to time.

For example (this is no endorsement, just a site I do peer at now and
then and so remember it), look here:

http://www.python-course.eu/python3_course.php

the left bar has a kind of order that's not insane (except I'd be
looking at files in the first 10 minutes, but that's just me); then
there's a tab called "advanced topics": forking, threads, etc. and then
some stuff you look at if you need it: wsgi, mod_python, sql connectors.
And then another tab for a great big "external" topics like NumPy,
Machine Learning and there are lots more in that category like Django,
Flask, SciPy, and so on - all can be considered "advanced" because
they're not the language itself, but stuff some people might expect you
to be proficient in for a given job that's billed as a "Python Job".

If you're looking at abstract base classes in your first few days,
that's probably not the right order ;)

I even have a bit of a bone to pick with the TDD movement, not that it's
a bad idea by itself, but when treated as a "religion" it seems to lead
to a mindset that unit tests alone are sufficient to prove a codebase,
when integration testing is just as important.
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-27 Thread leam hall
On Mon, Feb 27, 2017 at 9:28 AM, Alan Gauld via Tutor 
wrote:

> On 27/02/17 10:44, Leam Hall wrote:
> > Is there a list of Python skill progression, like "Intermediates should
> > know  and Advanced should know ?" Trying to map out
> > a well rounded study list.
>
> I'm not aware of such a list, and I'm not sure it's of much value.
> Better to just learn what you need and use it. When you need
> to learn more, learn it. The worst thing you can do is study an
> arbitrary list of topics that don't have any relevance to
> the problems you need to solve!
>
> Nobody is going to ask for an intermediate programmer, or a
> beginner programmer. They might ask for an expert, but if you
> are really an expert you will know that already - and you
> won't be able to become one by studying anything extra.
>
> Once you are past the basics - ie. you can write a program
> that does something useful, it's all about writing code and
> learning as you go. And you never stop learning.
>
>
> Hey Alan!

When I was coming up as a Linux guy I took the old SAGE guidelines and
studied each "level" in turn. It was useful for making me a well-rounded
admin and helped me put off some higher end stuff I wasn't really ready
for.

Things like Testing and documentation are useful, but only learning what
seems to bee needed for this one project seems harder for the new coder.
Most of us didn't know TDD was useful until we started doing it. Same for
documentation. It's sort of the "if we hired a junior or senior coder, what
basics would we want them to know?"

Thanks!

Leam
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Learning Objectives?

2017-02-27 Thread Alan Gauld via Tutor
On 27/02/17 10:44, Leam Hall wrote:
> Is there a list of Python skill progression, like "Intermediates should 
> know  and Advanced should know ?" Trying to map out 
> a well rounded study list.

I'm not aware of such a list, and I'm not sure it's of much value.
Better to just learn what you need and use it. When you need
to learn more, learn it. The worst thing you can do is study an
arbitrary list of topics that don't have any relevance to
the problems you need to solve!

Nobody is going to ask for an intermediate programmer, or a
beginner programmer. They might ask for an expert, but if you
are really an expert you will know that already - and you
won't be able to become one by studying anything extra.

Once you are past the basics - ie. you can write a program
that does something useful, it's all about writing code and
learning as you go. And you never stop learning.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos


___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


[Tutor] Learning Objectives?

2017-02-27 Thread Leam Hall
Is there a list of Python skill progression, like "Intermediates should 
know  and Advanced should know ?" Trying to map out 
a well rounded study list.


Thanks!

Leam
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor