<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Val Petruchek on Web-Development &#187; learning</title>
	<atom:link href="http://petruchek.com/tag/learning/feed/" rel="self" type="application/rss+xml" />
	<link>http://petruchek.com</link>
	<description>PHP, JavaScript, MySQL, Apache, CSS</description>
	<lastBuildDate>Sun, 13 Sep 2020 18:58:30 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Why is it so hard to learn programming?</title>
		<link>http://petruchek.com/2014/08/learn-to-program/</link>
		<comments>http://petruchek.com/2014/08/learn-to-program/#comments</comments>
		<pubDate>Sun, 10 Aug 2014 15:26:07 +0000</pubDate>
		<dc:creator>val</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[learn programming]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://petruchek.com/?p=172</guid>
		<description><![CDATA[I wrote this essay for one of Coursera courses I took recently and decided that I&#8217;d share it with a world. The first language I wrote the program in was Basic. The most challenging step for me was to understand &#8230; <a href="http://petruchek.com/2014/08/learn-to-program/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><em>I wrote this essay for one of Coursera courses I took recently and decided that I&#8217;d share it with a world.</em></p>
<p><img src="http://petruchek.com/wp-content/uploads/2014/08/everybody.png" alt="Steve Jobs on learning to program" width="640" class="alignnone size-full wp-image-175" /></p>
<p>The first language I wrote the program in was Basic. The most challenging step for me was to understand assignment statement which looked like this: x=x+1. I consider myself a mathematician who switched to programming, so for me understanding that statement was a real breakthrough: after I realized that 1) left &#8216;x&#8217; and right &#8216;x&#8217; are really different x&#8217;s and 2) this is not an equation but a command — after that everything was quite easy.</p>
<p>Learning second language (Pascal) was also pretty straight-forward: learn how to specify your commands for Pascal compiler (instead of Basic Interpreter), master couple of new principles (pointers, records etc.) and you are a Pascal programmer (well, almost). After that I learned PHP, JavaScript, and a little Ruby; now I&#8217;m mastering Python: the more languages you know, the easier adding new programming language to your skill set is.</p>
<p>I think that learning programming for me was quite easy because I had strong mathematical background. I knew logics, I knew how to prove things, I knew basic Boolean algebra and worked with numeral systems other than decimal. So the only thing I needed to understand really was that x=x+1 assignment: it broke my mathematical way of thinking and turned me into a (novice) programmer.</p>
<p>I have little experience teaching other people (of different ages) programming and what I find the most problematic for a lot of students is that in order to learn programming they have to learn two things simultaneously: 1) first they have to learn how to compose an algorithm 2) after that they immediately have to transfer their algorithm to a programming language.</p>
<p>Learning algorithms is quite challenging itself; mastering your first programming language when you have no experience in algorithms makes it extremely difficult.</p>
<p>And I don&#8217;t mean complex algorithms like sorting, binary search or graph theory. Even composing first algorithms for a basic executor like robot (whose set of commands is really narrow and includes only three of them: <em>STEP/ROTATE/WALL?</em>) is complex for people who have never done anything like that before. They are confused because they have very little experience controlling some executor by writing prior set of instructions that has to be clear, finite, produce a result &#8211; and a correct one &#8211; and solve not only one problem but a class of similar problems. Most students have experience in computer games where they control executors &#8211; but they do it in a real-time, and that&#8217;s a different story.</p>
<p>So, people are already confused. You don&#8217;t want to confuse them even more by explaining syntax: telling them about indentation, semicolons, memory and such. But you have to in most courses: you have to teach them programming, not algorithms.</p>
<p>The main difficulty in teaching programming (and learning it!) comes from the fact that in most cases you are teaching two things at a time: how to solve a problem algorithmically and how to write that solution in a language which is brand new for the students.</p>
<p>This problem goes away when students have already learned any programming language in the past and want to master second (or even second+) language: you just have to learn new syntax, couple of new principles and several abstraction models which are specific to a new language.</p>
<p>Writing first &#8216;hello world&#8217; program is intriguing and solves a lot of problems (both for teacher and for student) &#8211; running this program means software is installed, environment is configured, IDE is working etc. &#8211; but it can be also quite confusing for a student who has no experience in so called &#8216;informatics&#8217; &#8211; i.e. art of composing an algorithm.</p>
]]></content:encoded>
			<wfw:commentRss>http://petruchek.com/2014/08/learn-to-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB Courses</title>
		<link>http://petruchek.com/2012/12/mongodb-courses/</link>
		<comments>http://petruchek.com/2012/12/mongodb-courses/#comments</comments>
		<pubDate>Sun, 09 Dec 2012 12:58:48 +0000</pubDate>
		<dc:creator>val</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://petruchek.com/?p=115</guid>
		<description><![CDATA[I&#8217;m in the end of (taking) online MongoDB class: actually, it&#8217;s one of the best online classes I ever took. Short, dynamic video lectures, quiz in the end of almost every lecture, automatically graded homework every week. It&#8217;s MongoDB for &#8230; <a href="http://petruchek.com/2012/12/mongodb-courses/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m in the end of (taking) online MongoDB class: actually, it&#8217;s one of the best online classes I ever took. Short, dynamic video lectures, quiz in the end of almost every lecture, automatically graded homework every week.</p>
<p>It&#8217;s MongoDB for developers class, whenever console mongo is not enough, python is used (pymongo). Python (as a language) is funny, but easy ot understand (seems similar to Pascal to me, not enough syntactic sugar), perfect choice for learning.</p>
<p>They will be giving this course again on 21st of January 2013. A modified version of the course that uses Java as its implementation language, M101J, will start on February 25th. Also there would be MongoDB for DBAs course in the January.</p>
<p>The courses are given by 10gen Company, the one which actually stands behind MongoDB. Here you go: <a href="http://www.10gen.com/">company website</a>, <a href="https://education.10gen.com/">online courses website</a>.</p>
<p>Finally, distant education is able to replace what is called &#8220;career enhancement training&#8221;. Actually, it goes over and above: you don&#8217;t need to travel, you don&#8217;t need to spend much time at once, you can take them slowly, couple of hours per day.</p>
]]></content:encoded>
			<wfw:commentRss>http://petruchek.com/2012/12/mongodb-courses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
