YOU'RE HERE!
Welcome to the syllabus for

IFSC 3300
Internet Applications

Fall 2022
MW in EIT 218

Home page: https://dberleant.github.io/IFSC3300


Detailed Schedule

                            Bolded=planned as of the time you loaded this page . . . . . . . . . . . . Unbolded=supplementary

Day

Topic

Resources

Notes to instructor

M 8/22/2022

Introduction to the course and to JavaScript (JS)

  • W3schools.com/js is the tutorial
  • w3schools.com/jsref is a reference
  • Continuing the tutorial: "JS Introduction"
  • Recording: F'22
  • Send around an attendance sheet to see if unregistered attendees

    Show this page, codeacademy JS, have them start HW

    W 8/24/2022 Some JavaScript basics
  • "JS Where To"
  • "JS Output"
  • alert(), confirm(), & prompt()
  • "JS Statements"
  • HW 1, due W 8/31/2022
  • Recordings: F'22; F'21
  • M 8/29/2022

    The "grammar" of JavaScript
  • "JS Syntax"
  • "JS Comments"
  • "JS Variables" except exercises
  • Recording: F'22
  • Skip var to avoid confusion

    W 8/31/2022

    Variables & operations
  • Let (instead of var)
  • Operators
  • More arithmetic operators
  • Recordings: F'22, F'21 (parts 1 & 2), F'19
  • HW 2 due W 9/7/2022
  • Skip var to avoid confusion

    M 9/5/2022

    Labor Day

    Holiday!

    W 9/7/2022

    Boolean logic operators
  • Scan JS Assignment Operators
  •    Why not &&=, ||=, ====, >=, <=, ...?
  • Logic notes
  • JavaScript has no XOR boolean logic operator
  • Bitwise logic operators
  • Bitwise notes from W3schools
  • Advanced example: Bitwise operators
  • Recordings: F'22, F'21, F'19
  • HW 3 due next W 9/14/2022
  • Why not &&=, ||=, ====, >=, <=, ...? Two philosophies: automatically make every operator with its dual; only do useful ones
    M 9/12/2022 Entities
  • JS Data Types
  • JS if, else, & else if
  • JS switch (if time)
  • Recordings: F'22, F'21
  • The following class days need to be aligned with where we are now in w3schools and what is left, as codecademy has finished being replaced today.
    They could try out multidimensional arrays on their computers, including ones with uneven rows. Students needed some exercises about the arrays notes F'19 as it got dry

    W 9/14/2022

    Loops

  • The for loop statement
  • Foundational diagram of JS for loop
  • The while and do while loop statements
  • Recordings: F'22, F'21, F'19
  • HW 4 due W 9/21/2022
  • 2021: delete the alert(), confirm(), prompt() topic as it has been copied from here to an earlier lecture and thus covered already
    Old HW with figures Math.random() and interval notation [0,1)
    Conditional operator
    Statements vs. expressions
    Debugging: print/popup statements, step by step construction
    Consider changing HW 4 to require doing the dragonslayer exercise? Or the Code Your Own Adventure II exercise.

    M 9/19/2022

    Functions

  • JS Functions
  • Function equivalences
  • Recordings: F'22, F'21
  • For "Dot vs. square bracket access to objects" go through the HW problem. Have them write down something interesting to try in this or that sandbox. They need to get practice thinking this way for future use!

    W 9/21/2022

    Recursion

  • Example program 1
  • Make a function; then make it call itself
  • Ex. program 2, backup & diagram
  • Recordings: F'22, F'21, F'19
  • HW 5 due W 9/28/2022
  •  

    M 9/26/2022

    Arrays
  • Arrays
  • Recordings: F'22, F'21
  • Bitwise operators example is too advanced, try having them work through it as I do, then try different things themselves.

    W 9/28/2022

    Arrays II

  • Make a 2D array. 3D. 4D.
  • Array notes; demos 1, 2
  • Array Methods
  • Advanced: .forEach loops
  • push(), pop(), & balanced parentheses
  • Supplemental: documentation
  • Recordings: F'22, F'21
  • HW 6 due W 10/5/2022

  • Consider spending more time on this topic next semester (see supplementary material below)

     

    HW6.html (not HW6a.html) has some object questions which are useful

    M 10/3/2022

    Objects
  • JS Objects
  •      - in the W3schools JS ref. section
  • for/in loops (works for arrays)
  • Dot vs. square bracket access to objects
  • Recordings: F'22, F'21, F'19
  • W 10/5/2022

    Strings
  • JS "Strings" - basics we know
  • JS "String methods"
  • Unicode
  • HW 7 due 10/12/2022
  • Recordings: F'21, F'19
  • HW10.html has some good stuff left in it about numbers and the robots. Could be reused somehow.

    M 10/10/2022

    Numbers: more details
  • More about JS numbers
  • Recordings: F'22, F'21
  • Time: have them experiment to find out if JS knows about the leap second. 2018: took only about 60 min. but didn't seem good to start a brand new topic.

     

    W 10/12/2022

    Hexadecimal and binary numbers
  • Notes on number systems
  • Slides on number systems
  • Recordings: F'22, F'21
  • HW 8 due 10/19/22
  • Interesting to show things using the address bar too: typing in the action attribute; giving it arguments using "?"

    M 10/17/2022

    More about numbers
  • JS "Number Methods"
  • JS "Math"
  • Recordings: F'22, F'21
  • Next time save a little more time for the Date discussion.
    Check paper folder for extra printouts of the exercise

    W 10/19/2022

    Dates

  • JS "Random"
  • JS "Dates"; time.gov; leap second
  • JS "Date Formats" - highlights
  • JS "Date Methods" - highlights
  • Recordings: F'22, F'21
  • HW 9 due 10/26/2022
  • M 10/24/2022

    Events; HTML Forms

  • JS "Events"
  •      Mouse events
  •      (see "YOU'RE HERE!")
  • JS events example
  • HTML Forms (from HTML section)
            Modify "try it yourself" sandboxes!
            Try the end exercises
  • Recordings: F'22, F'21, F'19
  • They don't yet know what a model is. Explain it with discussion exercises and impress that it is an important concept going beyond just programming.

     

    Have them do something with the try it now exercises in real time. Then they can do the exercises too.

    W 10/26/2022

    Forms II
  • About HTML form processing
  • HTML form demo & exercise
            What on Earth is this?!
  • Recordings: F'22, F'21, F'19
  • HW 10 due W 11/2/2022

  • Halloween is in 5 days

    Source: www.history.com/.image/t_share/
    MTU4MDgyMjQyMTM
    5MTM3ODE3/halloween.jpg

    M 10/31/2022

    Forms (conclusion)
  • w3schools.com>HTML>HTML Forms:
         Form Elements
         Form input types
               How the CIA blew it - with forms and JavaScript (backup)
         Form attributes
  • Recordings: F'22, F'21, F'19

  • Happy Halloween!

    Source: www.history.com/.image/t_share/
    MTU4MDgyMjQyMTM
    5MTM3ODE3/halloween.jpg

     

    W 11/2/2022

    Timing
  • JS Timing
              Sample code: setTimeout()
              The time is...
              
  • Recordings: F'22, F'21
  • HW 11 due 11/9/2022
  • In class exercise idea: make a button based mini-game for turning things off before they happen
    In setInterval() lesson, try alert(alert("hi")) and explain. This is a gentle approach to recursion.
    In setTimeOut() lesson, try printing out alert(setTimeout(myFunction, 3000).
    Point out the recursion.
    For animation go through the example making changes to each significant line
    Skip "JavaScript HTML DOM EventListener" since it gives another way to do things we already know how to do - confusing
    Plan: DOM Animations lesson, then have them modify the animation however they can, then report to class.

     

    M 11/7/2022

    The DOM (start)
  • The DOM and its object hierarchy      Yes, document is in window
  • W3schools>JAVASCRIPT>JS HTML DOM:
         DOM Intro
         DOM Methods
         DOM Document
         DOM Elements
         DOM HTML
  • Recordings: F'22, F'21, F'20 part 1 and part 2 (shared from Google drive), F'19
  • W 11/9/2022

    The DOM (cont.)

  • DOM CSS
  • w3schools.com>HTML and CSS>Learn CSS>
         CSS Syntax review

         CSS Selectors review
  • DOM Animations
  • DOM Events and "this"
  • Recordings: F'22, F'21, F'19
  • HW 12 due W 11/16/2022
  • For the dimensions variables, could have students keep adding new ones to the same try it yourself exercise, instead of running them each in separate demos like the lessons have.

    If run out of time in lecture, have them start on HW, which used to be in-class exercise anyway.

    M 11/14/2022

    The DOM (finish)

  • DOM Navigation
          Focus on exploring a DOM tree; see F'22 recording
  • DOM Nodes
  • DOM Node Lists
  • Recordings: F'22, F'21, F'19
  • W 11/16/2022

    The BOM

  • BOM birds-eye view
  • w3schools.com/js > JS Window
         Resizing
         Exercise: something in "The Window Object"
         JS Screen
         JS Location
         JS History
         (Skip JS Navigator)
         Review JS Popup Alert
  • HW 13 due W 11/30/2022 (after break)
  • Recordings: F'22, F'21, F'19
  • M 11/21/2022

    Thanksgiving Break

    https://images2.minutemediacdn.com/image/upload/c_crop,h_2073,w_3677,x_0,y_459/f_auto,q_auto,w_1100/v1554994877/shape/mentalfloss/516089-istock-two_turkeys.jpg

    Source: https://www.mentalfloss.com/article/516089/turkey-animal-facts

    W 11/23/2022

    Thanksgiving Break

    https://images2.minutemediacdn.com/image/upload/c_crop,h_2073,w_3677,x_0,y_459/f_auto,q_auto,w_1100/v1554994877/shape/mentalfloss/516089-istock-two_turkeys.jpg

    Source: https://www.mentalfloss.com/article/516089/turkey-animal-facts

     

    M 11/28/2022

    Cookies

  • JS Cookies
  • decodeURIComponent(), Å, & UTF-8
  • Recordings: F'22, F'19
  • Note: the w3schools lesson is not well done, the sole try it yourself exercise is too long and involved. I need to review the last bullet point (decodeURIcomponent...) better so that part of the lecture is more coherent. The utf8-chartable page needs more rehearsing to make sure the %number column shows up in class
    See ser. #2.
    Plan: 15 min. of students finding and sharing facts about cookies
    Bake and eat cookies they easy way
    Students share some more about cookies that they found
    JS Cookies lesson
    They make change of their choice to the Try it Now example
    Possible HW problem: Upgrade the try it now exercise to delete the name cookie upon request with a delete cookie button.
    Alternative HW problem: Type into form and save into cookies, using the example I gave for processing a form in its own web page

    W 11/30/2022

    Regular expressions
  • w3schools.com/js > JS RegExp
  • w3schools.com/jsref > JS RegExp Ref.
  • Some regular expression notes
  • Regular expression study exercises
  • Recordings: F'22 F'21
  • Shorter HW 14 due MONDAY 12/5/2022
  • Have them figure out the number of elements of a /.../i regexp (2^n)
    Check https://regexr.com/ to see if can use something there.

    M 12/5/2022

    (last day of class)

    From Objects to Classes

  • Creating objects: old way & new way
  • A constructor function defines a class
  • JavaScript classes
  • Using the term "class" enables inheritance
  • Recordings: F'22, F'21
  • Shorter HW 15 is due W 12/7/2022 (in 2 days) instead of a final
  • Discussion outline: "Learn Ajax" lesson: First Try It Yourself example, point out the stuff we know as context. They substitute xhttp for this. They try window.XMLHttpRequest() instead of XMLHttpRequest() - why does it still work? They try different values for readyState, removing the status check in the if. Then look at ajax_info.txt. Use the file https://www.w3schools.com/action_page.php?day=Wednesday instead use the file pic_bulbon.gif instead. use the file http://ualr.edu instead. use the file js_ajax_intro.asp instead. use the file blahblah instead. append xhttp.responseText instead of replacing it and include values of readyState and status (and "<hr>" for clarity). change if test to (true) and get everything.

    Alternatively, Could have demos of games developed over the semester, at least the good ones

    HW 14: They are using too exactly the examples given in the w3schools /jsref page.

    W 12/7/2022

    No final

  • HW 15 due instead of a final exam

    Have a good winter break!
    (Source: GIPHY)

  •  

     

     

     

     

     

    Supplemental

    JSON


    Ajax

  • Review quiz (not for a grade) link
         Recordings: F'22, F'19
  • Review: w3schools.com/js > JS Objects
  • w3schools.com/js > JS JSON
    Moving to the specific JSON category -
  • w3schools.com/js > "JS JSON" category > JSON Intro
  • w3schools.com/js > JSON Syntax
  • Side trip: "JS support for local storage"
  • w3schools.com/js > JSON vs XML
  • w3schools.com/js > JSON Data Types
  • Skip JSON Parse
  • w3schools.com/js > JSON Stringify
  • Skip JSON Objects
  • Skip JSON Arrays

    Recording: F '19
  • w3schools.com/js > JS Ajax > Learn AJAX
            Some helpful notes
  • "AJAX - the XMLHttpRequest Object" (AJAX XMLHttp), key points only
  • "AJAX - Send a Request to a Server": AJAX Request
  • Top of AJAX Response, skip AJAX PHP & AJAX ASP
  • AJAX study exercises
  • Recording: F '19; notes*
  • Quiz section: Note the cert opportunity; they should let me know *before* taking it if they choose to take it. Seque to the quiz. Review quiz ahead of time as Qs seem not to change. Have entire class take it from the classroom screen but ask them not to call out the answer until I give the signal, so everyone has a chance to think about the Q first.

    Supplemental

    Robots

    Robots notes

    Old HW10 bots (HW solutions ser. #1)

    Computer, textbooks and related resources:

    Instructor:

    Daniel Berleant, PhD

    Website: http://dberleant.github.io (will have a link to this web page which is at http://dberleant.github.io/IFSC3300)

    Contacting the instructor:

    Homeworks: Assignments will be approximately weekly and usually scored on a scale of 50-100 points (this is a better algorithm than the typical 0-100 scale because it gives mathematically more sensible results). Quizzes or tests, if any, will be infrequent.

        Lateness policy: 10 points is possible for the grade on any assignment handed in up to 1 week late. Two such reductions in grade on any assignment handed in very late. No credit for multiple assignments handed in in a rush at the end of the semester.

    Student learning objectives:

    Catalog description: IFSC 3300 Internet Applications
    Prerequisite: IFSC 1310 or equivalent, or consent of Instructor. A hands-on course focusing on the technologies and concepts for creating dynamic and interactive web sites with a special emphasis on client-side technologies. Topics will cover techniques such as how to build efficient and dynamic interactive user interfaces, how to interface with data using standardized, portable formats, how to store/validate data and how to make data more accessible to other applications. Three hours lecture. Three credit hours.

    Emergency plans:

    Attendance policy and instructor presence: The instructor will lead the class as officially scheduled. Students who are neither attending class, nor turning in assignments, nor communicating with the instructor are required by university policy to be administratively withdrawn from the course. There are some arcane financial aid reasons for this, but the policy is the same regardless of any financial aid you might or might not have. IMPORTANT: If you want to drop a course, it is very risky to just assume you can stop attending and the instructor will automatically do it, as some instructors ignore the policy and give an F instead.

    Academic integrity policy: Work turned in must be your own work. You are welcome and indeed encouraged to get or give help to other students but NOT actual code. There is no learning benefit to copying code like that. No credit for assignments containing even a small amount of copying, and you might be referred to the university approved judicial process. Let's suppose someone turns in an assignment with copied code late in the semester. Then they would get no credit for it, and also, we would consider rechecking their earlier assignments for copying and if found changing the score(s) on those assignments to also be "no credit." See Academic Integrity and Grievance Policy and Academic Offences.

    Regular and Substantive Contact:

    Accomodations: