CMSI 185: Welcome to Week 15
This Week's Class Agenda
This week we will work on:
Reviewing for the final exam.
That's it…
Nothing else…
Remember that all material is fair game. The final will be comprehensive and closed everything.
All the information is on the class web pages, in your books, on your homework papers which have
been returned to you, and in your class notes from what I said (blathered?) in class. Everything is
fair game; I may even ask you a general question about something from one of the videos. The final
will be in the same format as the two quizzes we've had this semester.
Weeks 1 — 4: Intro and Fundamentals
The focus for the introductory material was on a brief introduction to what computer science really
is, some of the famous names in the field, a brief history of computation, and the fundamentals of
the art of programming. Here are the topics we covered in those weeks:
- Programming environment: setups and operation
- Tools: browsers, text editors, jsFiddle, jsLint, ScriptRunner, Playground, DOM inspector
- Java vs. JavaScript / programming languages
- What is computer science?
- Introductory "stuff": people, computers, parts
- Definition of an algorithm
- Program modeling and design / flowcharting / UML
- Sample algorithms: addition, multiplication, greatest common divisor; paper folding exercise;
double-dabble
- Some famous algorithms: Euclid's GCD, Russian Peasant Multiplication, computing roots,
8 queens, others
- Some famous programming problems; primes, palindromes, substrings, dice roller, permutation,
quadratic solver, stack implemetations, queue implementations
- Program basic input and output: Hello, world!
- Expressions/Variables/Statements
- Comments/Expected coding standards
- Binary/hex representations
- Truth tables
- Operator precedence
- Data types: numbers, strings, Booleans, objects, null/undefined
- Arrays, Strings, Javascript Prototypes
- Data structures: Stacks, Queues, Lists
- Using data structures in algorithms
Weeks 5 & 6: Loops and Decisions
This section covered the fundamental topics of how to make decisions during program flow, and how
to loop to perform repetitive operations. The concepts we discussed and demonstrated were:
- Declarations and expressions
- Input and output from users
- Conditionals: if statement, conditional expression, switch statement, short-circuits
- Iteration: for loop, while loop, do-while loop, for-in statement, break/continue
- Exceptions and error handling
- Recursion
Week 7: Implementing Algorithms
This topic was concerned with using "pseudocode" for developing algorithms that would
reflect the operations required for the solutoin. The following topics were covered:
What we covered:
- Analyzing the problem statement
- Writing out algorithm steps for the solution
- Analyzing the steps to see if they solved the problem
- Functional decomposition
- Preliminary design decisions
- Creating the basic web page with text areas and buttons
- Creating the JavaScript code to implement the algorithmic solution
- Connecting the JavaScript code to the web page
- Connecting the web page to the JavaScript code
- Working with "building block" step sizes to develop the solution incrementally
- First look at debugging tools, including instrumenting the code
Weeks 8 & 9: Functions
This section covered one of the most important, interesting, and useful concepts of JavaScript, or
any programming language, for that matter — the function. The
topics included:
- What is a function?
- Defining functions; Calling functions
- Program "scope"
- Functions as objects; functions in prototypes; closures; higher-order functions
- The "this" keyword and referencing
- jQuery library FTW
Weeks 10 & 11: Events and UIs
Here we focused on how the JavaScript event model works to make web pages dynamic, so that buttons
and other User Interface objects will function:
- Procedural programming
- Event-driven programming
- User interface elements
- Event handlers/event objects
- Implementations
Weeks 12 — 14: S/W Construction and Testing
Finally, for the last segment, we discussed the practice of software engineering, to put everything
we've learned about programming into the larger context of big programs, big data, major software
development projects, and how all our devices in the world can inter-operate:
- What is software engineering and software design?
- Object-Oriented program design
- Inheritance/encapsulation/information hiding
- Properties/prototypes revisited
- JavaScript built-in objects/web browser host objects
- Modularization
- Algorithm comparisons: efficiency, running time, Big-Oh notation
- Testing: unit testing, QUnit, debugging methods
Coming Up Next ...
THE FINAL EXAM: TUESDAY, DEC 11, 2018 AT 11:00
Thanks for a great class, and I hope you have learned some interesting
information!
Best of luck to all of you, now and in the future!!