Answers.Body: <p>I think this answer is the second derivative.</p>
  <p>Maybe it depends on who are you are targeting with the course.  If it's someone who is just graduating from using a browser to writing something in the browser, the student will be completely lost.  If it's someone who has most of an undergraduate CS education, including a course on compilers, you are fine.</p>
  <p>I'm teaching an introductory course on web tech right now at <a href="https://ashesi.edu.gh" rel="nofollow noreferrer">Ashesi University</a>; and while my students have been programming in Python for a while, have taken data structures your description would lose most of them.  Part of the answer depends on where you are going.  You may need to give some context on the history of the internet.  Especially with current college students; they are all digital natives who don't remember a time before browsers and cell phones; so I might start with some basics on the world wide web; and the problem JavaScript and its ilk were meant to solve.</p>
  <ul>
  <li>In the beginning the web was focused solely on structured markup.</li>
  <li>As MOSAIC (the first graphical web based browser built by a team at University of Illinois) transitioned to commercial products, notably Netscape's Navigator browser and Microsoft's Internet Explorer, there was a realization that tags themselves were not enough; and there was competition between commercial players in integrating scripting as part of the web, initially thought of as a way to provide more sophisticated animation as part of the page.</li>
  <li>The language Java was emerging from Sun Microsystems (now part of Oracle) as a new, type safe and object oriented language derived from the language C's syntax.</li>
  <li>Netscape embraced Java, and began writing much of their software in it.</li>
  <li>JavaScript as a language has very little to do with Java the language other than sharing a name.  JavaScript is interpreted, is not type safe--that is, it does not enforce checking that integers are integers, strings are strings, etc--and models many of it's best features from functional programming languages like Lisp.  Like Java it does use a C like syntax; and while it support objects, they are supported using prototypical--where object definition is implicit--rather than class inheritance as languages like Java and Python do where class definition is separate from object instantiation.</li>
  </ul>
  <p>In my class we did a section on early internet evolution that put a lot of this in context (one class, where I had guest speakers who worked on building early browsers... I'm a dinosaur too so I know other dinosaurs).</p>
  <p>Then the other stuff is good to illustrate the difference.  Esp. with node one of the practical things to discuss is since it was an embedded language to start; a lot of features people take for granted (say coming from Java) like packages and modules aren't part of the core engine.  Those had to be invented so that JavaScript could run in a REPL when Node was introduced.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-10-15T22:32:45.687Z
Answers.LastActivityDate: 2024-09-09T12:09:25.763Z
Answers.LastEditDate: 2024-09-09T12:09:25.763Z
Answers.UserDisplayName: toddwseattle
Body: <p>I am planning to make a free JavaScript online video series. The first chapter covers the Javascript history and its capabilities. Following is a transcript of the video.</p>
  <p>I would like it to be reviewed by someone good at JavaScript. Check for the correctness, the accuracy of facts, and any other suggestions or improvements that might seem necessary. I would especially require scrutiny in the 'abilities' section of the script to see if the definitions hold true.</p>
  <hr />
  <h1>Javascript History and Capabilities</h1>
  <ul>
  <li><p>JavaScript was created at Netscape Communications by Brendan Eich and his team in 10 days, in May 1995.
  Its syntax and functionality were inspired by Java, Scheme, and Self.</p>
  </li>
  <li><p>Javascript was first named as Mocha, later renamed as LiveScript.
  LiveScript was again renamed to JavaScript to gain popularity as the 'younger brother' of Java</p>
  </li>
  <li><p>JavaScript was meant to manipulate web pages by modifying the DOM to show, hide or change content dynamically</p>
  </li>
  <li><p>Is used for online form submissions and animations.</p>
  </li>
  <li><p>It is the Defacto client-side scripting language of browsers, a popular choice on servers as well.</p>
  </li>
  <li><p>ECMAScript is a scripting language specification standardized by Ecma International, it is a set of guidelines to design a scripting language. JavaScript is an implementation of ECMAScript</p>
  </li>
  <li><p>Javascript is a scripting language since it is interpreted by browsers and there is no intermediate compiled code.
  Modern browsers now use JIT compilers to 'semi compile' it in order to optimize its execution</p>
  </li>
  <li><p>Javascript is single-threaded to minimize complexities with concurrency</p>
  </li>
  <li><p>In browsers and servers Javascript codes are parsed (read) inside an environment called Javascript Engine.
  Javascript engine compiles it to machine language and instructs the OS to execute the instructions</p>
  </li>
  <li><p>Some notable javascript engines are</p>
  <ul>
  <li>V8 – in Chrome and Opera.</li>
  <li>SpiderMonkey – in Firefox.</li>
  <li>ChakraCore - in Microsoft Edge.</li>
  <li>Nitro or SquirrelFish - in Safari</li>
  </ul>
  </li>
  <li><p>Abilities</p>
  <ul>
  <li>can run multiple tasks simultaneously without blocking any of the tasks (Asynchronous)</li>
  <li>can exchange data asynchronously with a server across a network (Fetch API or AJAX)</li>
  <li>can react to user actions such as mouse click, keypress, etc (event handling)</li>
  <li>can switch between tasks in a single-threaded execution (concurrency)</li>
  <li>can make use of object-oriented concepts (prototype-based Object Model)</li>
  <li>can manipulate DOM of the browser to change the display of the webpage</li>
  <li>can store data locally on browsers (cookies, local storage, etc)</li>
  </ul>
  </li>
  <li><p>Restrictions placed in the browser for the sake of data safety</p>
  <ul>
  <li>Does not provide low-level CPU and memory access</li>
  <li>Cannot implicitly access files or OS functions</li>
  <li>users need to explicitly provide file access by input tags as well as for input device access such as camera and microphone, cannot access other tabs of the browser.</li>
  <li>It follows the 'same-origin policy' wherein javascript from one domain cannot access resources from a different        domain if it doesn't have a CORS header</li>
  </ul>
  </li>
  <li><p>Javascript running on the server side have full access to the file system, input devices, and OS functions. it does not follow      'same-origin policy'</p>
  </li>
  <li><p>Javascript Capabilities depend on the implementation of the javascript engine and the interfaces provided to it by the environment.</p>
  </li>
  <li><p>Other languages compile into javascript which is then parsed by javascript engines.
  One such notable language is TypeScript which adds strict typing and object orientation.</p>
  </li>
  </ul>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-25T16:53:43.107Z
Comments.Text: Since I know this is going to get flagged, I will preemptively post this: before flagging to close the question, please read the description for the [tag:curriculum-review] tag. This is one of a handful of special tags [available on this site](https://cseducators.meta.stackexchange.com/questions/187/introducing-the-new-tags-curriculum-review-lesson-review-and-materials-re?r=SearchResults) that are a little different from many of the other sites.  I haven't examined this question closely, but my instinct is that, with maybe a little editing, it reasonably follows the model required by the tag.
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-27T13:10:00.963Z
Comments.Text: You don't seem to say much of anything about the structure of javascript at all. The fact that it is prototype based OO language is interesting, at least.
Comments.UserDisplayName: Buffy
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-27T15:02:44.633Z
Comments.Text: @Dheeraj I've added it back in; it's the tag that allows this sort of question.
Comments.UserDisplayName: Ben I.
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-10-28T07:54:26.757Z
Comments.Text: @Buffy How can i add more structure to it? did you mean adding more syntax and examples? those would come in the later chapters where i go deep into each of the concepts
Comments.UserDisplayName: some_groceries
Tags: <javascript><curriculum-review><lesson-review><materials-review>
Title: Need review of course content: Javascript History and Capabilities
ThreadText: # Need review of course content: Javascript History and Capabilities
  
  (Asked by: username_0 on 2019-10-25)
  
  I am planning to make a free JavaScript online video series. The first chapter covers the Javascript history and its capabilities. Following is a transcript of the video.
  
  I would like it to be reviewed by someone good at JavaScript. Check for the correctness, the accuracy of facts, and any other suggestions or improvements that might seem necessary. I would especially require scrutiny in the 'abilities' section of the script to see if the definitions hold true.
  
  ---
  
  # Javascript History and Capabilities
  
  * JavaScript was created at Netscape Communications by Brendan Eich and his team in 10 days, in May 1995.
    Its syntax and functionality were inspired by Java, Scheme, and Self.
  * Javascript was first named as Mocha, later renamed as LiveScript.
    LiveScript was again renamed to JavaScript to gain popularity as the 'younger brother' of Java
  * JavaScript was meant to manipulate web pages by modifying the DOM to show, hide or change content dynamically
  * Is used for online form submissions and animations.
  * It is the Defacto client-side scripting language of browsers, a popular choice on servers as well.
  * ECMAScript is a scripting language specification standardized by Ecma International, it is a set of guidelines to design a scripting language. JavaScript is an implementation of ECMAScript
  * Javascript is a scripting language since it is interpreted by browsers and there is no intermediate compiled code.
    Modern browsers now use JIT compilers to 'semi compile' it in order to optimize its execution
  * Javascript is single-threaded to minimize complexities with concurrency
  * In browsers and servers Javascript codes are parsed (read) inside an environment called Javascript Engine.
    Javascript engine compiles it to machine language and instructs the OS to execute the instructions
  * Some notable javascript engines are
  
    + V8 – in Chrome and Opera.
    + SpiderMonkey – in Firefox.
    + ChakraCore - in Microsoft Edge.
    + Nitro or SquirrelFish - in Safari
  * Abilities
  
    + can run multiple tasks simultaneously without blocking any of the tasks (Asynchronous)
    + can exchange data asynchronously with a server across a network (Fetch API or AJAX)
    + can react to user actions such as mouse click, keypress, etc (event handling)
    + can switch between tasks in a single-threaded execution (concurrency)
    + can make use of object-oriented concepts (prototype-based Object Model)
    + can manipulate DOM of the browser to change the display of the webpage
    + can store data locally on browsers (cookies, local storage, etc)
  * Restrictions placed in the browser for the sake of data safety
  
    + Does not provide low-level CPU and memory access
    + Cannot implicitly access files or OS functions
    + users need to explicitly provide file access by input tags as well as for input device access such as camera and microphone, cannot access other tabs of the browser.
    + It follows the 'same-origin policy' wherein javascript from one domain cannot access resources from a different domain if it doesn't have a CORS header
  * Javascript running on the server side have full access to the file system, input devices, and OS functions. it does not follow 'same-origin policy'
  * Javascript Capabilities depend on the implementation of the javascript engine and the interfaces provided to it by the environment.
  * Other languages compile into javascript which is then parsed by javascript engines.
    One such notable language is TypeScript which adds strict typing and object orientation.
  
  **Tags:** javascript, curriculum-review, lesson-review, materials-review
  
  > **Comments:**
  > **username_1**: Since I know this is going to get flagged, I will preemptively post this: before flagging to close the question, please read the description for the [tag:curriculum-review] tag. This is one of a handful of special tags [available on this site](https://cseducators.meta.stackexchange.com/questions/187/introducing-the-new-tags-curriculum-review-lesson-review-and-materials-re?r=SearchResults) that are a little different from many of the other sites.  I haven't examined this question closely, but my instinct is that, with maybe a little editing, it reasonably follows the model required by the tag.  
  > **username_2**: You don't seem to say much of anything about the structure of javascript at all. The fact that it is prototype based OO language is interesting, at least.  
  > **username_1**: @Dheeraj I've added it back in; it's the tag that allows this sort of question.  
  > **username_0**: @username_2 How can i add more structure to it? did you mean adding more syntax and examples? those would come in the later chapters where i go deep into each of the concepts  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_3 on 2020-10-15. Score: 1
  
  I think this answer is the second derivative.
  
  Maybe it depends on who are you are targeting with the course. If it's someone who is just graduating from using a browser to writing something in the browser, the student will be completely lost. If it's someone who has most of an undergraduate CS education, including a course on compilers, you are fine.
  
  I'm teaching an introductory course on web tech right now at [Ashesi University](https://ashesi.edu.gh); and while my students have been programming in Python for a while, have taken data structures your description would lose most of them. Part of the answer depends on where you are going. You may need to give some context on the history of the internet. Especially with current college students; they are all digital natives who don't remember a time before browsers and cell phones; so I might start with some basics on the world wide web; and the problem JavaScript and its ilk were meant to solve.
  
  * In the beginning the web was focused solely on structured markup.
  * As MOSAIC (the first graphical web based browser built by a team at University of Illinois) transitioned to commercial products, notably Netscape's Navigator browser and Microsoft's Internet Explorer, there was a realization that tags themselves were not enough; and there was competition between commercial players in integrating scripting as part of the web, initially thought of as a way to provide more sophisticated animation as part of the page.
  * The language Java was emerging from Sun Microsystems (now part of Oracle) as a new, type safe and object oriented language derived from the language C's syntax.
  * Netscape embraced Java, and began writing much of their software in it.
  * JavaScript as a language has very little to do with Java the language other than sharing a name. JavaScript is interpreted, is not type safe--that is, it does not enforce checking that integers are integers, strings are strings, etc--and models many of it's best features from functional programming languages like Lisp. Like Java it does use a C like syntax; and while it support objects, they are supported using prototypical--where object definition is implicit--rather than class inheritance as languages like Java and Python do where class definition is separate from object instantiation.
  
  In my class we did a section on early internet evolution that put a lot of this in context (one class, where I had guest speakers who worked on building early browsers... I'm a dinosaur too so I know other dinosaurs).
  
  Then the other stuff is good to illustrate the difference. Esp. with node one of the practical things to discuss is since it was an embedded language to start; a lot of features people take for granted (say coming from Java) like packages and modules aren't part of the core engine. Those had to be invented so that JavaScript could run in a REPL when Node was introduced.
  
  
  ---
  
  