needed in 5 hours

profileProf.Olivia
csassignment4.pdf

CSC 106 - SPRING 2016 THE PRACTICE OF COMPUTER SCIENCE

ASSIGNMENT 4 UNIVERSITY OF VICTORIA

Due: Tuesday, March 15th, 2016 at 11:00pm.

This assignment will be submitted electronically through conneX (as described in ‘Submission Instructions’ below). Do not submit a hard copy of your answers; paper submissions will not be marked. All code submissions must be your own work. How- ever, you are permitted to use the code discussed in lectures and labs (or code posted on conneX) as the basis for your submissions if proper attribution is given.

Question 1: Survey of Programming Languages [30 marks]

Consider the problem of finding the median of three numbers x, y and z. Recall that the median of a set of numbers is the value which lies in the middle when the numbers are sorted. For example, the median of 4, 9 and 1 is 4 and the median of 2, 5 and 3 is 3.

Choose 3 of the languages listed below and, for each language, write a program which reads three integer values from the user and prints the median of the three. Some of the languages listed will not be officially covered by the course, so they may be more challenging to use.

• Ada • C or C++ (but not both) • C# • FORTRAN (any version, including Fortran-95, is fine) • Java • Common Lisp • Pascal • Perl • Pep/8 assembly • Python

All of the languages above (except Pep/8) are supported by the online tools at http://www. tutorialspoint.com/codingground.htm. If you develop your program using the tools on that website, you can download the source file by right-clicking on the file in the left-hand pane of the IDE and selecting “Download file”.

Your submission for this question will consist of three files (one for each chosen language). Each program will be worth 10 marks. Please name your files according to the table below.

1

Language Filename

Ada median3.adb

C median3.c

C++ median3.cpp

C# median3.cs

FORTRAN IV median3.f

FORTRAN 77 median3.f

Fortran 90 median3.f90

Fortran 95 median3.f95

Java Median3.java

Lisp median3.lisp

Pascal median3.pas

Perl median3.pl

Python median3.py

Bonus (optional): You will receive 10 bonus marks if you submit implementations for all 10 options above. (This is mostly a character building exercise, since the work required far outweighs the number of bonus marks offered)

Question 2: Database Systems [30 marks]

One example of a large scale database system is the University of Victoria’s registration database, which tracks the enrollment and scheduling for all courses offered at the university. Consider the three tables below, which contain a subset of the course scheduling information for Spring 2016. The table course names maps each course to its name, the table course sections specifies the instructor for each section of each course, and the table prerequisites maps each course to its prerequisite courses. Note that a course may have multiple sections and multiple prerequisites.

Table course names subject code course number course name

CSC 106 The Practice of Computer Science

CSC 110 Fundamentals of Programming I

CSC 115 Fundamentals of Programming II

CSC 205 2d Graphics and Image Processing

CSC 225 Algorithms & Data Structures I

CSC 226 Algorithms & Data Structures II

CSC 230 Intro. to Computer Architecture

SENG 265 Software Development Methods

CSC 370 Database Systems

SENG 310 Human Computer Interaction

2

Table course sections subject code course number section name instructor firstname instructor lastname

CSC 106 A01 Bill Bird

CSC 106 A02 Bill Bird

CSC 110 A01 Tibor van Rooij

CSC 110 A02 Tibor van Rooij

CSC 115 A01 LillAnne Jackson

CSC 115 A02 LillAnne Jackson

CSC 115 A03 Tibor van Rooij

CSC 115 A04 Tibor van Rooij

CSC 205 A01 Bill Bird

CSC 225 A01 Venkatesh Srinivasan

CSC 226 A01 Frank Ruskey

CSC 226 A02 Frank Ruskey

CSC 230 A01 Sudhakar Ganti

SENG 265 A01 Daniel Hoffman

SENG 265 A02 Daniel Hoffman

CSC 370 A01 Alex Thomo

SENG 310 A01 Peggy Storey

Table prerequisites subject code course number prereq subject prereq number

CSC 115 CSC 110

CSC 225 CSC 115

CSC 226 CSC 225

CSC 230 CSC 115

SENG 265 CSC 115

CSC 370 CSC 226

CSC 370 SENG 265

SENG 310 SENG 265

A file courses.sql has been posted to conneX (in the Lectures section) which creates a database containing the three tables above (and the data for each table). In the space indicated in the courses.sql file (without modifying any of the existing SQL statements), write SQL queries for each of the questions below. Your submission for this question should be a single modified version of courses.sql, with all of the table data intact, containing your answers for all of the questions below.

Note that it is acceptable for errors to be reported on lines 3, 4 and 5 of the courses.sql file (since those lines are used to clear any existing data from the database).

When you experiment with sqlite3, you may want to use the .mode column and .header on commands to improve the readability of the output.

The sample output given below was generated after running .mode column and .header on. It is not necessary for your queries to produce output in the same order as the samples, unless the ordering is specified in the question.

3

(a) Write a query to print the subject code, course number and course name of every course listed above, sorted by the course number. Sample output: subject_code course_number course_name

------------ ------------- --------------------------------

CSC 106 The Practice of Computer Science

CSC 110 Fundamentals of Programming I

CSC 115 Fundamentals of Programming II

CSC 205 2d Graphics and Image Processing

CSC 225 Algorithms & Data Structures I

CSC 226 Algorithms & Data Structures II

CSC 230 Intro. to Computer Architecture

SENG 265 Software Development Methods

SENG 310 Human Computer Interaction

CSC 370 Database Systems

(b) Write a query to print the subject code, course number, section name and instructor name (first/last) for all sections of CSC 115. Sample output: subject_code course_number section_name instructor_firstname instructor_lastname

------------ ------------- ------------ -------------------- -------------------

CSC 115 A01 LillAnne Jackson

CSC 115 A02 LillAnne Jackson

CSC 115 A03 Tibor van Rooij

CSC 115 A04 Tibor van Rooij

(c) Write a query to print the subject code, course number and course name of all second year (200-level) courses. Sample output: subject_code course_number course_name

------------ ------------- --------------------------------

CSC 205 2d Graphics and Image Processing

CSC 225 Algorithms & Data Structures I

CSC 226 Algorithms & Data Structures II

CSC 230 Intro. to Computer Architecture

SENG 265 Software Development Methods

(d) Write a query to print the subject code, course number, course name and section name of all courses taught by Tibor van Rooij. You should use the command .width 15 15 30 15 before your query to prevent the course name from being truncated. Sample output: subject_code course_number course_name section_name

--------------- --------------- ------------------------------ ---------------

CSC 110 Fundamentals of Programming I A01

4

CSC 110 Fundamentals of Programming I A02

CSC 115 Fundamentals of Programming II A03

CSC 115 Fundamentals of Programming II A04

(e) Write a query to print the instructor name (first/last), course name and section name for every SENG course. You should use the command .width 15 15 30 15 before your query to prevent the course name from being truncated. Sample output: instructor_firs instructor_last course_name section_name

--------------- --------------- ------------------------------ ---------------

Daniel Hoffman Software Development Methods A01

Daniel Hoffman Software Development Methods A02

Peggy Storey Human Computer Interaction A01

(f) Write a query to print the subject code, course number, course name and the total number of sections for each course, sorted by course number. Note that your output is not required to have num sections as the heading for the last column (you should use the SQL COUNT function). You should use the command .width 15 15 30 15 before your query to prevent the course name from being truncated. Sample output: subject_code course_number course_name num_sections

--------------- --------------- ----------------------------------- ---------------

CSC 106 The Practice of Computer Science 2

CSC 110 Fundamentals of Programming I 2

CSC 115 Fundamentals of Programming II 4

CSC 205 2d Graphics and Image Processing 1

CSC 225 Algorithms & Data Structures I 1

CSC 226 Algorithms & Data Structures II 2

CSC 230 Intro. to Computer Architecture 1

SENG 265 Software Development Methods 2

SENG 310 Human Computer Interaction 1

CSC 370 Database Systems 1

(g) Write a query to print the subject code, course number and course name of every course which has CSC 115 as a prerequisite. You should use the command .width 15 15 32 before your query to prevent the course name from being truncated. Sample output: subject_code course_number course_name

--------------- --------------- --------------------------------

CSC 225 Algorithms & Data Structures I

CSC 230 Intro. to Computer Architecture

SENG 265 Software Development Methods

5

(h) (Bonus - 4 marks - optional) Write a query to print the name (first/last) of every instructor who teaches more than one section, sorted by last name. You should use the command .width 20 20 before your query to prevent the output data from being truncated. Sample output: instructor_firstname instructor_lastname

-------------------- --------------------

Bill Bird

Daniel Hoffman

LillAnne Jackson

Frank Ruskey

Tibor van Rooij

Submission Instructions

All submissions for this assignment will be accepted electronically. You are permitted to delete and resubmit your assignment as many times as you want before the due date, but no submissions or resubmissions will be accepted after the due date has passed.

Ensure that each file contains a comment with your name and student number, and that the files for each question are named as dictated by the question. If you do not name your files correctly, or if you do not submit them electronically, it will not be possible to mark your submission and you will receive a mark of zero.

After submitting your assignment, conneX will automatically send you a confirmation email. If you do not receive such an email, your submission was not received. If you have problems with the submission process, send an email to the instructor before the due date.

6