Computing Science 162

Topics in Computing

Course outline for Spring 2018

CSCI 162 (4) Topics in Computing Science
An introduction to applied and theoretical concepts in Computer Science. Topics include fourth generation languages, computer organization, system software, software engineering principles, and theory of computation. (3:0:1)
Prerequisite: Min "C-" CSCI 160.



Lecture: Tue, Thu 8:30-10:00 B255/140
Lab: Tue 1:30 OR Thu 2:30 B315/102
Instructor: Dr. Gara Pruesse
Office:  Bldg 315, Room 218
Phone:  753-3245 Local 2337
email:  Gara [dot] Pruesse [at] viu [dot] ca
Office Hours Tue 3:00-4:00, Thur 1:30-2:30
Text:   There is no required text for this course. Web materials will be posted to this course outline.

Content

The following is roughly the schedule for the course:
Week Topic Useful links Homework/Required Reading/Viewing Lab Link
Jan 9, 11   What is computer science? Overview of the course. Defn of Algorithm Boolean Algebra What Are Algorithms (video) Lab 1
Jan 16, 18 Digital Circuits, DNF, Karnaugh Maps CNF, Karnaugh Maps Logic Operations Logisim Karnaugh Rules Digital Logic, 7-segment display, and Karnaugh Maps (U. Ottawa)
From Page 12 on of Designing Logic Circuits is good coverage of the material. Note they use the notation for logic where "AND" is denoted as multiplication, "OR" with sum, and "NOT" is overline. Hence AB + C is the same as A ∧ B ∨ C
Assignment 1; partial Solutions 1. As an exercise, do Last Year's Assignment. Lab 2: Circuits
Jan 23, 25 Representing Data Wikipedia on Floating Point, BCD, One's and Two's Complement Tools for Learning: BBC serves up course material for high-school students in the UK. They cover some of the material in the course, though not to great depth. The material and the self-tests make a nice, gentle review of some topics. Note: they use the term "denary" for base-10.
Review the following material and do the self-tests at BBC Bitesize:
Binary Numbers and Binary Addition
Hexadecimal (skip the material on colour)
Lab 3: 7 Segment Display
Jan 30, Feb 1 Computer Architecture MARIE cpu simulator manual
A lecture on MARIE Assembly language
Examples of MARIE code
A lecture on MARIE Architecture
Opcodes
Architecture Chapter from the developers of MARIE
Lab 4: Computer Architecture 1
Feb 6, 8 Computer Architecture: microcode implementation of MARIE instruction set; Intro to Operating Systems Unix Family Tree (jpg); Linux Command Cheat Sheet; Dave Wessels Guide to Unix MARIE instruction set cheat sheet Lab 5: MARIE program (computer architecture II)
Feb 13, 15 Operating Systems: Linux Android is based on Linux; Operating Systems notes Lab 6: Linux 1
Feb 20, 22 Prolog intro; midterm review Sample Midterm
Prolog Wikibook
Prolog Family
Feb 27, Mar 1 Study Days -- No Classes
Mar 6, 8 Midterm; Logic Programming SWI-Prolog documentation
Learn Prolog Now!
Prolog Lists examples
Prolog Lists
Mar 13, 15 Finite Automata Perlis Epigrams
Mar 20, 22 Finite Automata, Regular Expressions Why regular expressions are useful, Moreno's Automata Notes; Wikiversity; See page 556 of these notes for regular expression notes. Lab 9: Prolog FA
Mar 27, 29 Church-Turing thesis; pseudocode; Algorithm Analysis Assignment 2
Apr 3, 5 Algorithm analysis: Θ, O, Ω
Apr 10, 12 Algorithm Analysis; Review for Exam Georgy Gimel'farb slides (pdf), Cathy at Seneca book (html) (section on Intro to Algorithms Analysis, in 4 parts, is relevant) loop analysis 16n2+5n ∈ O(n2/2 - 1). Finite Automata and Regular Expressions Practice for Quiz in Tutorial; Practice Final Solutions to FA and Regular Expression Practice Problems Correction: the DFA for 1(a) should have a transition on a b from state 1 to state 3, and a loop on b at state 3.
"Useful links" may be added as the course progresses, at the discretion of the instructor. The "useful links" will not be a substitute for class notes. Class notes will not be made available.

If time permits, other topics may also be covered, including possibly: data storage, ADTs, networks, algorithms.

Although this is not explicitly a programming course, some assignments will involve programming in C++, Prolog or a "demo" assembly language. Students are expected to know all of the required C++, but other languages will be discussed in class.

Grading:

Grade = 25% Assignments + 24% Midterm + 3% Lab Participation + 3% Quizzes + 45% Final Exam
Alternative Grade = 25% Assignments + 20% Midterm + 3% Lab Participation + 12% Quizzes + 40% Final Exam
The student will have the opportunity to write two more quizzes to help prepare for the exam. If it is to the student's advantage, the alternative grade will be used as the grade for the course.