CS 492 Group Assignment

Computer Science Education in Secondary Schools

March 7, 2003

 

Jennifer Kimáááááááááááááá 98183110

Munir Nasseráááááááááááá 98172653

Muneer Mirzaááááááááááá 98133690

Tyler Rooneyááááááááááááá 98138091

 

 

 


Introduction

 

Computer Science is a relatively young area of study and as a result, has a much less developed educational backbone in high school.á From our research and personal experiences, weÆve found that the Computer Science curriculum in high school is disorganized and non-standardized across school and even within schools.á Often there existed no hierarchy of classes from grade 9 through to grade 12.á Students with programming experience and who had taken Computer Science courses previously were mixed together with students who had never written a program or even used basic applications.á This makes it extremely difficult from both the teacherÆs and the studentÆs perspective.á How can the teacher design a curriculum to suit the needs of a class whose knowledge is spread over such a wide spectrum?á Imagine a teacher attempting to teach a math class where half the class knew calculus and algebra and the other half had never learned simple multiplication.

 

Another fundamental problem with Computer Science in high school is the quality and background of the Computer Science teachers.á More often than not, Computer Science teachers in high school donÆt have the proper background to adequately teach Computer Science courses.á These teachers are seldom Computer Science majors from university.á TheyÆre not even teachers whose teachables include Computer Science.á We believe that there is a lack of existing education and resources for teachers who want to teach Computer Science as well as a lack of initiative and motivation for new teachers to choose Computer Science as an area of specialization.á This results in an overall decrease in the quality of Computer Science courses offered to high school students.

 

We realize that the shortage of teachers with a strong Computer Science background is a problem that requires a fairly long-term solution.á However, that does not mean that current Computer Science teachers canÆt make do with what is available.á Although our research for this paper doesnÆt adequately represent all Computer Science curricula and all Computer Science teachers, we found that teachers were putting too much emphasis on the problems they were faced with rather than coming up with creative solutions given their limited resources.á A few teachers complained of limited hardware, a lack of good textbooks or spacious classrooms.á We believe that these problems are trivial compared to the disorganization of the curriculum, which takes almost no physical resources to fix.á These issues will be discussed further in this report.

 

Lastly, we believe that the Computer Science curriculum in high school suffers greatly because students just donÆt know what Computer Science is.á From our own personal experiences, we found that there was general confusion about the nature of Computer Science from the average high school studentÆs perspective.á Often, the high school curriculum offers ôComputer Scienceö courses ranging from courses teaching students how to use Microsoft Word, to Object Oriented Programming.á These courses are all offered with the same ôComputer Scienceö title, and in no particular order.á We believe that the size, breadth, popularity and growth of Computer Science courses in high school suffer because of a lack of information and confusion about the nature of Computer Science.

 

Curriculum

 

Generally, the Computer Science curricula begin with introductory courses in Grade 10.á Basic concepts such as data types, selection, and loops are taught in a variety of languages such as Microsoft Visual Basic and Turing.á More advanced data types are presented in grade 11, in addition to concepts such as file input/output, searching, and sorting.á It is sometimes the case that simple concepts in Object Oriented Programming are taught at this level.á One problem identified for the grade 11 course is that it often has to be taught assuming no student has taken the grade 10 course. For grade 12, concepts in Object Oriented Programming are discussed with greater detail.á Students are also given the opportunity to learn simple Internet publishing concepts such as HTML.

 

Preparation for UW

 

For the most part, the current curriculum for high school Computer Science classes does not prepare anyone for first year Computer Science at the University of Waterloo. It is our contention that if CS131 was not provided as a starting point then many students would be discouraged by the sharp learning curve. It should also be noted that thirty percent of first year Computer Science students begin with CS131. Current grade 12 high school curriculum for math and science courses prepare students for their equivalent first year university courses. This is not the case with Computer Science, especially at Waterloo. Some students entering the university ôdon't know that using applications on a computer does not necessarily prepare them for the study of Computer Science.ö Also, schoolÆs that teach programming usually teach concepts on a high-level which can fool students into thinking they understand concepts when in fact they do not (see Appendix B, Interview with Sandy Graham).

 

Equipment

 

Generally, the computer equipment available to schools is relatively equal to the number of students taking Computer Science courses. Moreover, students are fortunate to have hardware and software that reflect industry standards.á That is, students have access to Intel Pentium-based hardware, with substantial RAM, and they are privy to popular development software such as Microsoft Visual Basic, Microsoft Office, and the Java programming language.áá In general, students do have access to computers outside the classroom, for instance at home or in the library.á However issues, with software licensing and at home usage arise due to the varying nature of computer usage at home, and different educational licensing policies by software vendors.

 

Budget cutbacks are problems for teachers in that often there may be a wealth of hardware available to them, but not enough qualified people around to configure the technology.á Moreover, budget cuts have also been tied to reduced availability of computers outside class time.

 

Assignments and Exams

 

The present curriculum entails assignments that progressively get more difficult and are based on the topic being covered.á We find that these assignments do a good job in allowing students to grasp key concepts.á However, assignments are not consistent across the hierarchy of the curriculum in that all courses are independent.á Assignments in one course may overlap other courses, or higher-level courses may offer easier assignments than lower level courses.

 

The final projects are sufficient in preparing students for entry into the University of Waterloo Computer Science program.á They teach students to define problems and develop ways to solve these problems. Examples of assignments are included in Appendix C of this report.

 

Recommendations û Teachers

 

There is an unquestionable shortage of high school teachers with a strong enough Computer Science background to teach a solid Computer Science course.á This is a problem that may not have an ideal short-term solution.á Ideally, this problem could be remedied by increasing the popularity of Computer Science as a teachable for teachers.á I think the majority would agree that Computer Science majors are not typically motivated to obtain their degree to teach Computer Science in high school.á I also think that many would agree that those who aspire to teach for a living are not always inclined to choose Computer Science as one of their teachables.á We believe that there should be more marketing and education for aspiring teachers to choose Computer Science as a teachable.á Maybe the university should offer Computer Science courses geared specifically for students taking the teaching option.á These courses would not be nearly as gruelling as core Computer Science courses, but would teach all the fundamentals required to teach at a high school level.á This way, Computer Science is not as intimidating for aspiring teachers.á

 

A potential short-term solution would be to offer existing teachers Computer Science courses that would result in their certification.á High school teachers get a couple months during the summer with which they could increase their education through these courses.á We understand that the increased workload and the learning curve associated with teaching Computer Science is often a deterrent for teachers who are more comfortable teaching subjects that they are already familiar with.á As a solution, we propose that different pay scales be implemented for Computer Science teachers who have taken the time to obtain these Computer Science certifications.á We hope that this solution will work in two ways.á First, existing teachers will be motivated by the pay increase and will take the time to learn Computer Science from the bottom up in these courses.á Second, students will benefit from having teachers who are more eager and better equipped to teach Computer Science.

 

Recommendations û Equipment/Resources

 

There were many issues brought up by teachers regarding a lack of resources, materials, hardware, software and equipment.á These deficiencies are attributed to a shortage of funds and expertise and, in the opinions of the teachers: result in the inability of the academic material to be taught efficiently.á

 

Textbooks are an integral part of any curriculum.á They allow students to review, verify and comprehend topics demonstrated in class by the teacher.á Introductory textbooks in the field of Computer Science do exist that allow students to gradually grasp important concepts.á Due to the immense content in many Computer Science textbooks, the material they cover could be spread across more than one course. For example, the first introductory half could be covered in grade 11 and the second and more advanced half could be covered in grade 12.á

 

A search on Amazon.ca provided some very useful titles:

1)                  ôAn Introduction to Programming and Object Oriented Design Using Javaö áby Jaime Nimo

2)                  ôJava 2: A Beginner's Guideö
by Herbert Schildt

3)                  ôKarel the Robot: A Gentle Introduction to the Art of Programmingö
by Richard E. Pattis, Jim Roberts, Mark Stehlik

An analysis of book descriptions as well as reader reviews (some by school teachers) demonstrates that the above books are ideal for a high school class environment.á Also, the cost of the textbook may be shared between the budgets of the two courses that are using it.

 

An issue regarding the lack of classroom teaching equipment was also raised.á Such equipment included projectors, writing boards and computer monitors.á However, the use of such equipment is independent of the quality of instruction.á University classrooms that are used for teaching complex and advanced theories and techniques of Computer Science and programming mainly only use a blackboard and well prepared lectures to illustrate ideas.á A large part of problem solving in Computer Science does not involve the direct use of computers (i.e. Analysis, design, documentation, etc.).á We find that computers do not even need to be in the classroom where the teaching takes place.á This will reduce distracting factors such as games, the web and instant messaging.á Computers should be situated in dedicated labs (preferably 2 or 3 per school) where students are able to use labs after class time as well as during specified class lab time.á This also allows for multiple classes to use the computers while other classes are learning theory.á If budget problems exist with regards to lab size and number of students, then the lab can be used on a rotational basis among students in the class, such that a number of students are in the lab while others are learning theory during one period and they switch during the next period.á Teachers can also encourage the very useful practice of peer programming where students share a computer and work on projects in partners or groups.

 

The final issue with respect to resources involves the performance and quality of computers used by students.á We find that effective illustration and understanding of proper development techniques and theories can be accomplished with the use of a compiler and text editor.á These minimal software requirements can be acquired at relatively low cost or free, and can run on modest hardware.á Schools with a moderate budget should be able to teach the same techniques and theories as schools with large budgets.

 

Recommendations - Curriculum

á

The curriculum for every math and science course within high school is designed to prepare you for the equivalent first year university course. The same must be true for Computer Science curriculum. In order to do this, curriculum should become standardized. The major issue raised against standardization is the drastic discrepancy in lab equipment from school to school. With our proposed changes to refocus the curriculum on in-class teaching with less concentration on physical lab time, schools will be able to standardize their Computer Science classes. Currently most high school courses focus on simply producing code and flashy graphical interfaces. In general we believe that lecture, assignments, and exams should incorporate problem solving, design analysis, and pseudo code abstraction to accompany actual coding.

 

Curriculum should also clearly build on previous grades and allow for a general introduction to computers. Our proposed grade 9 curriculum should assume students have no previous computer experience. This class will provide an introduction on how to use computers in general and applications like Microsoft Office. The class will also provide an introduction to how computers and the Internet work. Grade 10 will become the first step in preparing students for university programs. This course could incorporate tasks like building a simple web page and should move on to programming concepts like variables, differences in data types, and condition/loop statements. The most important part of this course should be to teach concepts and not be language specific. These concepts could be taught with JavaScript which requires no compiling and only a modern web browser to execute.

 

Grade 11 should build on these concepts while focusing on procedural abstraction and file input/output. If possible, this class should use a compiled language like Java or Turing. As well, this class could introduce database concepts and SQL. We believe that databases can be an excellent tool to develop problem-solving skills and provide a further understanding of data types. The Grade 12 class should, again, continue on previous courses but should be primarily focused on students entering university Computer Science programs. This class should introduce object oriented design as well as non-programming topics like testing and documentation. We all found that universitiesÆ attention to documentation and testing is completely overlooked in high school. This class should also contain an independent learning project so that students with advanced skills can progress faster.

 

Recommendations û StudentsÆ Impressions

 

For many of the more traditional courses such as Math, History, English, or Music, students have the ability to gradually progress through high school.á That is, courses may be extensions or continuations of previous courses, therefore giving students the ability to obtain increased amounts of knowledge for each additional course.á As already mentioned, Computer Science curriculums unfortunately do not follow such a regimented format.á Instead, Computer Science courses at the high school level often overlap excessively, increasing the potential for students to become uninterested with the curriculum.á As such, a standardized curriculum was recommended where each successive class is complementary to its predecessor.á We believe that with such a curriculum, students will be able to learn Computer Science progressively, similar to Math, History, English, Music, etc.

 

A common problem for high school students entering a Computer Science program at university is their misconceptions about what the program entails, the type of courses and assignments offered, and what sorts of careers are available for computer scientists.á It is therefore important to help address all these issues before high school students actually venture into university.á Specifically, students should be enticed with big and challenging projects, and it should be made clear to them that Computer Science is not simply assembling and using high-tech gadgets û but rather, that Computer Science involves mathematics, problem solving skills, software development skills, and teamwork skills.á Moreover, it would be very advantageous for students to meet with industry visitors for them to get a good sense of the role of Computer Science within academia, and within the workforce.

 

The last, and perhaps most important aspect of improving studentsÆ impressions, is giving them opportunities to reap the benefits of self-reward.á For example, students may take a proactive role in their education by conducting weekly seminars, where students are required to present new and relevant topics in front of the class.á That way, students may have a more informal way of learning new material.á Another powerful tool is the Internet.á By maintaining personal Web pages, students have the opportunity to feel satisfied that they are actually published on the Internet, and they will also be challenged to learn about Web technologies related to publishing their documents.

 

Conclusion

 

As Computer Science is a relatively young and dynamic discipline, educators are having a tough time preparing students for university.á Problems with inconsistent and incomplete curricula, books, equipment, and a lack of fully qualified Computer Science educators are further challenges facing educators and students alike.á Consequently, students start in Computer Science programs at universities with misconstrued beliefs about what the programs entail, and where they may end up in the future.á

 

To remedy these problems, we recommend several changes in the ways that Computer Science is presented at the high school level.á First, we suggest that curricula be standardized across schools, and that courses should be progressive û building upon earlier courses.á Second, the focus should be shifted to concepts of Computer Science as opposed to simply programming.á Consequently, students would have a better understanding not only of Computer Science, but also of where it may lead them in the future.á Third, we have found several high quality books that may be used by educators to assist with presenting the material.á

We found that the schools interviewed had fairly good hardware and software resources.á However, in cases where schools are not as fortunate, classes may be staggered, teaching theory to part of the class, while having lab time for the other part.á Moreover, presenting theoretical Computer Science as mentioned can easily counterbalance deficiencies in hardware and software.

 

Students may also take some of the learning initiative into their own hands.á They may be made responsible for presenting new topics in class, and/or they may be challenged by big assignments or by maintaining a Web page.á These projects could be both enjoyable and rewarding for students.

 

The education of teachers is another important to properly developing a Computer Science education system at the high school level.á Specifically, we found that teachers are teaching Computer Science having a wide variety of backgrounds.á We therefore recommend that universities and teacherÆs colleges should place additional incentives for aspiring teachers to take Computer Science teachables.á Moreover, providing teacher certifications and introducing pay scales based on qualifications may ameliorate the delivery of Computer Science education at the high school level.

 

Finally, we have developed a curriculum û beginning in grade 10 û that is progressive and challenging.á Students are first taught the basics of computers and Computer Science, then are presented simple programming techniques.á Once students reach grade 11, more advanced skills are discussed, and finally in grade 12, students are introduced to Object Oriented concepts, as well as topics such as testing and documentation.

 

Although we concede that there is no short-term solution to problems with the delivery of Computer Science education in high schools, we are confident that our recommendations will better prepare students for entry to Computer Science at the University of Waterloo.á

 


Appendix A û Teacher Interviews

 

Michelle Vidberg, Galt CI.

 

Summary of program

¸In what grade does the Computer Science curriculum begin?

 

In the grade 9 Integrated Tech course (TTI) there is a unit on Introductory Computer Programming.á At many schools this is not taught though.á I'm now working on developing this unit using Tcl/Tk for this semester's classes.

 

Otherwise, it begins in Grade 10 with the Open level TIK course.

 

¸What are the programming languages taught?

 

This varies greatly from school to school.á At GCI, we teach Turing and VB6 in Grade 10 (TIK course) with Turing first to emphasize the basic concepts then VB6 second because the kids like the ôbells and whistlesö

 

In Grade 11 (ICS3M) we used to use VB6 but as of this year now concentrate on Turing.á In the future this may also include some of the O-O features built into Turing, but right now we just use the procedural functionality.

 

In Grade 12 (ICS4M) we use Java, specifically with Holt Software's ôReady to Programö Java IDE.á (Check out Holt Software at www.holtsoft.com û they are also the ones who distribute Turing)

 

In addition, we intersperse some HTML/JavaScript into some of the courses to break things up a bit and apply some concepts like repetition, selection and arrays to a new setting.

 

¸What are the key concepts presented?á (i.e. data structures like arrays, data types, loops, if statements, etc.)

 

Variables, repetition (conditional and counted loops) and selection (if..then..elsif..else..end if)á first.á (Grades 10, 11, 12)á

Then arrays. functions/procedures, some types of searching/sorting (Grades 11 and 12).á

Records, arrays of records, other data types, more searching/sorting, recursion, object-oriented programming (some in grade 11, mostly grade 12)

 

¸How much attention is devoted to pure theory? (i.e. Object-Oriented Programming, Algorithm design and analysis, Testing)

 

We always dedicate the start of the course to problem-solving methods, software development models, data flow.á As we start programming we talk about algorithm design, do pencil/paper code walkthroughs (which the students HATE!), effective debugging, types of errors (syntactical vs. logical) and designing good test data.

In the Grade 12 course I spent the first 2 weeks with ôKarel the Robotö to introduce O-O programming and found I returned to Karel quite often to reinforce concepts.á Lots of theory focus in grade 12...

 

¸What do [weekly] assignments entail?

 

I'll try and send some examples later.á Several small programming tasks, increasingly challenging.á Perhaps one small-group task and a larger multi-faceted question.á One or two large projects throughout the year û including the final project.

 

¸Describe a typical final project.

 

This year's Grade 11 project û design a system to keep track of books in your personal library.á Each book's information is stored as a record, with the library being an array of records.á Write subprograms to enter/delete books, search/sort by field, display information in a variety of formats, etc... , create a user interface and design a logo using pixel graphics.á (Individual project)

 

This year's Grade 12 project û which is really a procedural problem in an O-O language û I have work to do with this course still!

Read in employee records, including age, salary, etc....

Write Java subprograms to manipulate the data and display it in a number of ways, including a scatterplot of age vs. salary using pixel graphics. (Group project)

 

(Yes these assignments are quite alike û in terms of concepts, I probably got almost as far with this group in the revamped Grade 11 course as I did with my first group of Grade 12s (because they had done VB in grade 11)

 

¸How many hours of class per week?

 

76 minutes per day times 5 days.

 

¸How much time is spent in class for lecture, as opposed to independent learning, working on projects/assignments?

 

We typically spend 15 minutes at the start of class for review, questions, etc.á On days when I am introducing a new topic (about once a week) I may spend up to an hour doing an interactive lesson with them.á (I teach, they try it out, we discuss, etc...)á Apart from this ôformalö teaching, I am working individually or with groups of students, students are working on assignments, critiquing their peers' work, discussing problems, etc.á I try to facilitate an environment where students communicate with each other û not all students are keen on this though.

 

¸Does the course offer any field trip opportunities, industry or academic visitors?

 

Occasionally we have a ôreal-lifeö programmer come to share his/her career with us.á We do not currently have any field trips but we may in the future.

 

Summary of equipment

 

¸Describe the ratio of computers to students.

 

Usually 1 to 1 but that is just luck and numbers. áIn theory I could have up to 27 students with only 20 computers.

 

¸Describe the typical hardware specs. (CPU speed, RAM, etc.); and, are all machines the same?

 

Hmmm.... I'll have to check on that.á They are about equivalent to decent Pentium 3s with plenty of RAM for our needs.á We are not slowed down by the hardware anymore û a few years ago this was a problem.

 

¸Describe all the software used for the classes (i.e. Administration software, Development software, Teaching software, Testing software, etc.)

 

Grade 10 û Turing and VB6

Grade 11 û Turing (by Holt Softwareá - www.holtsoft.com)

Grade 12 û Java (using Holt Software's ôReadyö Java IDE)

throughout û HTML and JavaScript using Notepad and a browser (usually IE)

Marks Softwareá - MarkBook (used in most Waterloo Region schools currently)

OS û Network runs on StudeNT Vista (based on Windows NT) and machines run Windows 98

 

¸Are school computers (labs) accessible outside of class time?á What other facilities are available to students?

 

Yes, labs are available at lunch and on students' spares, however they are in high demand.á I am working on purchasing a school student license for Turing and Ready Java so that they can (legally) work at home too.

 

 

Summary of students

 

¸How many students are in a typical CS class?

 

20-25, although the max is theoretically 27.á (By the way, with classes over 20/23 we are doubling up students on computers.)

¸How many students pursue further education involving computer programming?

 

Of my 20 Grade 12 students this year, about 15 are headed for CS or Computer/Electrical/Software Engineering, or college-level computers or robotics.

 

¸To your knowledge, are there any students who pursue CS after high school who do not take any CS courses in high school (for whatever reason)?

 

Yes.á I think this happens with students who considered themselves ôartsyö in high school and weren't interested in computers.á They may get into college/university studying something different, say law, and get really interested in the CS applications of the subject.á I don't think this is a bad thing.á However, I do try to encourage all types of people to at least try CS.

 

¸What do students tend to think of the class? Is it considered too easy/too hard/only for CS people/etc.?

 

I think students expect it to be harder than it is.á I tell them at the outset that if they come to class, do their best and complete assignments they will pass, and I have yet to be proven wrong.á The students who fail the courses do not make an effort,complete assignments or accept offers of extra help.á There is also a stereotype of the type of person who enjoys CS û I try to avoid reinforcing that stereotype even though many students may fit the profile (and I probably do too!)á This means assuming students are not familiar with all the computer lingo, do not necessarily have computers at home, are not all strong math and science students, and do not all watch the Space channel!á It also means providing a variety of assignments, some math-based, some socially/ethically based, some graphical/artistic, etc.á Hopefully this will avoid some CS stereotyping and encourage a wider variety of people (including more young women) to take the courses.

 

¸Describe the gender demographics of a typical CS class.

 

About 30-40% female.á However, those females who do sign up are sometimes hard to hang on to.á I find they need a lot of encouragement to stick with it and not give upá - especially young women who come into the Grade 11 ICS course without the Grade 10 course and are a bit overwhelmed at the start.

 

Personal

 

¸What is your education and background?

 

B.Math (Teaching Option) from U.Waterloo, B.Ed. from UWO. (both 1994)

 

¸Do you perform any IT tasks within your school (i.e. network support, troubleshooting, architecture/infrastructure, etc.)?

 

I'm the CATC (Computers across the Curriculum Committee) representative for our school's Tech. Dept.á CATC develops IT plans for the school, prioritizes hardware/software requests, implements appropriate professional development.á

We are very fortunate to have a full-time computer support person in our school who deals with all networking, installation, repair, etc. types of issues.

 

¸It was mentioned during the in-class presentation that recently there has been a slight drop in the number of students taking CS courses in high school.á What may be some reasons for this trend, in your opinion?

 

As students are completing high school in 4 instead of 5 years, they have less room for elective subjects.á Some would say that because CS now falls under the Tech. Jurisdiction instead of Math or Business that it has become less popular û I tend to disagree with that view however.

 

¸What do you think is the optimal way of teaching CS to students?

 

Hmmmm... my answer to this changes constantly!á Currently I introduce a topic every week or so, do a few examples, and let students spend several days working individually and in small groups, going through related problems.á This allows me to interact more with the students who need more direction, while those who can take off on their own.á I try to encourage a lot of peer interaction and support within the class.á We tackle a few larger projects through the year, including a final project which I now think I will keep as a group effort.á I try to evaluate in a variety of ways û both written and programming tests, small homework problems, code design and walkthrough, larger tasks.á I also try to incorporate reading assignments, watch and report on videos, critique websites, etc. (particularly in social/ethical topics).á I'm still working on this though...

 

¸Where would you like to see CS education in 5 years? 10 years?á (i.e computes at every desk, virtual learning, online courses, etc.)?

 

I think there will continue to be a need for personal interaction with a teacher (I hope so or I'm out of a job!) at least for the majority of the students.á I would like to see opportunities for students to supplement their in-school learning with online courses and projects though.á I would like to see in 5 years that the curriculum across Ontario is being taught fairly consistently, so that universities and colleges will attach some credibility to the course.á I hope that the level of hardware and software available at schools will be sufficient that it does not cause a hindrance to education.á Currently some schools deal with very slow equipment that slows down learning.á (Not that I'm complaining about my own situation however)

 

Kevin OÆReilly, Forest Heights

 

Summary of program

 

Summary of equipment

 

 

Summary of students

 

 

Personal

 

 


Appendix B û Interview with Sandy Graham

 

What percentage of entering CS students take CS131, CS133, CS134?

Rough numbers have approximately 30% of the student starting with CS131,
65% of the student starting with CS133, and 5% of the students starting
with CS134.

This may change next fall since we have increased the prerequisite
knowledge for CS133 to include experience with subprograms and
parameters. Previously students were only expected to know loops and
selection.

What would you consider the biggest problem (or problems) with high
school CS curriculum? (Funding, training, standards, etc)

The biggest problem I see with the high school CS curriculum is that
there are not enough people who want to teach CS in high school. Many CS
teachers did not study CS in university; many feel unprepared to teach
the courses in high school. The second biggest problem is that CS is an
elective course, and elective courses are struggling to survive in the
new curriculum. I think small schools in particular will have trouble
offering a section of the grade 12 courses for example.

What would you consider the biggest problem first year CS students
face with UW's CS program?

I think students would tell you that the biggest problem they face is
the pace at which things are taught. I think the biggest problem
students in CS133 face is that there is an incredible diversity of
experience in that group of students. Most students think the pace is
too fast or too slow, and not many think we are teaching at their level.
Lectures, rather than a high school classroom experience, tends to make
students passive learners and they can be fooled into thinking they
understand concepts when in fact they don't. I also think that some
students are not as computer science literate as they think they are -
for example they don't know that using applications on a computer does
not necessarily prepare them for the study of computer science.

Do you get the majority of your questions from high school students or
teachers? What do the questions usually pertain to?


I probably speak with more students annually than teachers. The forums
in which I speak with with students simply have a larger number
associated with them: the university fair in Toronto and Campus Day for
example. Students want to know what marks they need to get into the
program, and what kinds of jobs they can get with a CS degree. Teachers
want to know what they should be emphasizing in their courses so that
their students are more prepared for first year, what language they
should teach, and if I have any suggestions for text books for their
courses. Parents who email me often want to know if Waterloo has some
kind of enrichment program for their child (usually son) in CS.

 

 

 

Appendix C û Galt CI Tests and Assignments

 

Name_________________________

 

ICS 4MI Test û Strings & Input/Output

 

ááááááááááá Username:á test

ááááááááááá Password:áááááá winsock

 

 

Please save all programs in the MyDocuments folder of your test account.

 

The following code fragments may (or may not!) be useful as you write your programs:

 

ááááááááááá BufferedReader input

ááááááááááá input = new BufferedReader(new FileReader (fileName))

ááááááááááá PrintWriter output

ááááááááááá output = new PrintWriter (new FileWriter (fileName))

ááááááááááá output.close()

ááááááááááá throws IOException

ááááááááááá import java.io.*

ááááááááááá number=Integer.parseInt (line)

 

 

¸Read a pair of strings from a file called wordpairs.dat (strings are saved one per line) and prints them on the screen in alphabetical order, or says that they are equal. You should deal with the possibility that some strings may contain capital letters, however the output on the screen should show the strings in their original case.

 

eg. If wordpairs.dat contains:

hello

Fred

summer

Summer

 

The output on the screen would be:

The word Fred comes before the word hello.

The word summer is equal to the word Summer.

 

Save this file as IOCompare.java

[8 marks]

 

 

 

 

 


 

¸Declare String s1 and set it equal to the word happiness.á Use String methods to print the following on the screen.

 

a)ááá The number of characters in s1.

b)ááá The result when all letters in s1 are changed to capital letters

c)ááá The result when every letter a in s1 is changed to a letter o.

d)ááá The third-last character in s1.

e)ááá The first 4 characters in s1.

f)áááá The location of the first letter p.

 

Save as StringMethods.java

[7 marks]

 

 

¸Ask the user to enter a word.á State the word and whether or not it contains the phrase ôingö.á Program repeats 5 times or until the user enters ôstopö as the word.á Print results on the screen and output to the file called ing.dat.

 

e.g. If user enters the word ôparachutingö,

Print out ôThe word parachuting contain the phrase ing.ö

 

e.g. If user enters ôhallucinogenicö,

Print out ôThe word hallucinogenic does not contain the phrase ing.ö

 

Save as IngWords.java

[5 marks]

 

 

Name___________________

 

ICS 4MI û Methods & Classes Test

 

 

¸Circle either True or False. [6 marks]

 

oThe Turtle class must be instantiated before its methods can be used.

 

Trueááááááááá False

 

 

oThe word ôvoidö appears in the signatures of all methods that do not return values.

Trueááááááááá False

 

oClass methods belong to non-instantiated classes.

 

Trueááááááááá False

 

oA subclass inherits only private methods and data.

 

Trueááááááááá False

 

oThe methods of the Math class contain the word ôstaticö in their signatures.

Trueááááááááá False

 

oWhen you call a method from an instantiated class, the name of the method must be preceded by the name of the object.

 

Trueááááááááá False

 

 

¸Why does the Turtle class have 2 constructors?á Explain a situation where each might be used.á [3 marks]

 

 

 

ICS 4MI û Final Project

 

This part of your final assessment is worth (approximately) 10% of your final mark.á It is a team-based project, and marks will be assigned both for planning, communication, documentation efforts and for actual Java coding.á Efforts should be made to divide the workload up equitably, to communicate effectively with fellow team members and to resolve problems at the team level.á Any irresolvable problems or questions should be directed to your CEO (Mrs. Vidberg) through your team leader.

 

Specifics:

 

¸Each team consists of 2-3 members

 

¸One team member will be given the title ôTeam Leaderö

 

¸Team Leader is responsible for time management, conflict resolution and communications with CEO.

 

¸All aspects of project must be completed by Wed. Jan. 22/03

 

¸All team members are expected to be present in class on Wed. Jan. 22/03 for project show-and-tell and peer/team evaluations.á Any student absent (without a very good reason) will receive zero for that portion of the project.

 

Problem:

 

Read in a set of related arrays from a file, perform various operations on the data, and print out a graph of the data.á Do error-checking and debugging on your Java code.á Add internal documentation and create a user manual file explaining how to use the code.

 

Problem Specifics:

 

¸Save as FinalProject.java

 

Ûarray.dat contains name, age and salary information for 10 employees, with one piece of data per line.

 

e.g. áááááááááá name1ááááááááááááááááááá

age1

salary1

name2

age2

salary2

à

 

ÛRead data from array.dat into 3 arrays nameArray, ageArray, and salaryArray.

[readData method]

 

ÛPrint information in a neatly formatted table.[printData method]

 

ÛSort the array by name using a sorting algorithm.á (Details available from your CEO) [sortData method]

 

ÛPrint a chart of employee names and whether they are Students (<=18), Adults (19-59) or Seniors (>=60) [categoriseData method]

 

ÛPrint a graph (scatterplot) of age vs. salary.á Include a title, labeled axes, scale, etc. [graphData method]

 

¸Main method calls the readData method, then gives a menu of choices of other methods.

 

¸Thoroughly comment your code, including a complete header and comments in each section of code.

 

¸Create a user manual, describing how to use the program, any known bugs or limitations, future upgrades, etc.

 

¸Other (extra marks)à

 

 

Name:___________________

ICS 4MI û Final Written Test

 

1.ááááááááááááááááá Explain briefly the 3 programming paradigms we discussed in class.á Give an ááááááá example of one language which fits into each paradigm. [6 marks]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.áááááááá In computer science, what do each of the following terms mean? [12 marks]

 

ááááááááááá Constructor

 

ááááááááááá Superclass

 

ááááááááááá Protected

 

ááááááááááá Class

 

ááááááááááá Object Method

 

ááááááááááá Instantiate

 

3.áááááááá List 2 advantages to using the Console class provided in our version of Java.á [2 marks]

 

 

 

 

 

 

 

4.áááááááá What do we mean by ôcastingö?á Give an example of its use.á [2 marks]

 

 

 

 

 

 

 

5.áááááááá List 6 of the basic data types used in Java.á [3 marks]

 

 

 

 

 

 

 

6.ááááááááááááááááá Give 2 examples of calculations for which there are Java ôshortcutsö.á Give the full version and the shortcut.á [2 marks]

 

 

 

 

7.áááááááá Turn each of the following sentences into one line of Java code: [5 marks]

 

ááááááááááá a)á if word is equal to the String ôYesö (assume word was declared as a String)

 

 

 

 

ááááááááááá b)á while counter is equal to 5 (assume counter was declared as an int)

 

 

 

 

¸while line is not equal to the null String (assume line was declared as a String)

 

 

 

 

ááááááááááá d)á if the square root of x is less than or equal to y.á (assume x,y were declared as doubles)

 

 

¸Give an example of a recursive method that can be used to find the sum of the first n numbers.

[5 marks]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

¸Describe 2 different ways to determine whether a method is of function-type or procedure-type.

[2 marks]

 

 

 

 

 

 

 

 

 

 

 

¸Draw a diagram to represent the iterative model of software development. á[6 marks]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

¸Explain why the iterative model of software development (drawn above) is more realistic/applicable than the waterfall model.á [2 marks]

 

 

¸What is the difference between overloading and method and overriding a method?á Give an

example of each from the work done in this course.á [2 marks]

 

 

 

 

 

 

 

 

 

¸Who developed Java? [1 mark]

 

 

 

 

 

 

14.á Thinking Question!á List 3 ways in which this course could benefit someone in their future work/schooling, even if they do not continue on in the computer science field.á [3 marks]

 

 

 

 

 

15.áááááá What will be the output when the following program is run?á [4 marks]

 

// The "FinalTest" class.

import java.awt.*;

import hsa.Console;

 

public class FinalTest

{

ááá static Console c;áááááááááá // The output console

 

ááá public static void main (String [] args)

ááá {

ááááááá c = new Console ();

 

ááááááá int numbers [] = new int [10];

ááááááá for (int x = 1 ; x < 10 ; x++)

ááááááá {

ááááááááááá numbers [x] = x * 5;

ááááááááááá if (x % 4 == 0)

ááááááááááááááá numbers [x] = x / 4;

ááááááá }

ááááá ááfor (int y = 0 ; y < 10 ; y++)

ááááááá {

ááááááááááá c.print (y, 10);

ááááááááááá c.println (numbers [y], 10);

ááááááá }

ááá } // main method

} // FinalTest class

 

 

Name_________________________

 

ICS 4MI Test û Methods & Classes

 

ááááááááááá Username:á test

ááááááááááá Password:áááááá javatime

 

 

Please save all programs in the Handin folder in the Test class on your desktop!!

 

¸Create a new class called Triangles.á Make a triangleShape method which draws a green equilateral triangle using an object from the Turtle class.á The method has the following signature:

ááááááááááá triangleShape(int xc, int yc, int size)

 

 

 

 

 

 

...where (xc,yc) are the co-ordinates of the bottom-left vertex of the triangle and size is the length of each side of the triangle.

 

Please note:á an equilateral triangle has 3 equal-length sides and 3 equal angles! (each is 60 degrees).

 

Now create a main method that draws a pattern of 6 triangles on the screen, with a side length of 20.á Choose pattern a) or pattern b), but note that pattern b) is worth 1 mark more than a).á Save as Triangles.java. [5 marks for a), 6 marks for b)]

 

a)áááááááááááááááááááááááááááááááááááááááááááá b)

 

 

 

 

 

 

 

¸á Create a new class called RandomSquares.á In the main method, instantiate 2 FatTurtles, one red and one green, of width 6 pixels each, at random points on the screen.á Have each one draw a square of random size.á The squares should be drawn simultaneously.á (i.e. Red draws one line, then Green draws one line, Red draws another line,...)á

Note: you do not have to make a square method, everything can go into main.

 

Save as RandomSquares.java. [5 marks]

 

Name:________________

ICS 4MI û Arrays Test

 

Log in to your assigned test account to create your solutions:

ááááááááááá username: test

ááááááááááá password: final

 

¸Save all your solutions in the Hand-in folder of the TST class on your desktop.

¸Save your work often!á System crashes can and do happen at the worst possible times!

¸Keep your eyes on your own monitor.

¸Include a brief header at the top of each program with your name, date, ICS4MI and program name.

¸If you complete 1 and 2 thoroughly you will receive 20/24.á To get a perfect mark you would also have to complete 3 and 4.

 

You may (or may not) find the following I/O-related phrases useful in your coding:

 

ááááááááááá BufferedReader input

ááááááááááá input = new BufferedReader (new FileReader (fileName))

ááááááááááá PrintWriter output

ááááááááááá output = new PrintWriter (new FileWriter (fileName))

ááááááááááá output.close()

ááááááááááá throws IOException

ááááááááááá import java.io.*

ááááááááááá number = Integer.parseInt (line)

 

1.áááááááá Write a Java Program that reads in a list of 10 names from the data file array1.dat and stores them in an array.á It then reads in a list of 10 Math ááááááááááá marks from another data file, called array2.dat and stores them in another áááááá array.á Create a method called printArray which takes these 2 arrays as ááááááááááá parameters and prints out a chart of names and marks.

 

ááááááááááá Another method called averageArray takes the marks array as a parameter, áá calculates the average (using a loop again) and returns the average value to ááááááááááá the main program where it is printed below the chart.

 

ááááááááááá e.g.áááááá Nameá Mark

ááááááááááááááááááááááá Amyáááá 98

ááááááááááááááááááááááá Bobááááá 34

ááááááááááááááááááááááá ...áááááááá ...

 

ááááááááááááááááááááááá The average of the 10 marks is 67%

 

ááááááááááá Save as MarksArray.java. [10 marks]

 

2.áááááááá Write a Java program that generates a random integer between 1 and 4. áááááááááá Repeat this process 1000 times.á Create an array to keep track of how many áá times each integer came up.á Print a chart with each number (1 to 4) in the ááááááá first column, the number of times it occurred in the second column and the ááááááááááá percentage of the time it occurred in the third column.

 

e.g.áááááá Integerááááááááááá Number of Timesáááááá Percentage

ááááááááááá 1ááááááááá 317ááááááááááááááááá 31.7%

ááááááááááá 2ááááááááá 256ááááááááááááááááá 25.6%

ááááááááááá 3ááááááááá 212ááááááááááááááááá 21.2%

ááááááááááá 4ááááááááá 215ááááááááááááááááá 21.5%

 

ááááááááááá Save as RandomArray.java.á [8 marks]

 

 

3.áááááááá Do this only when 1 and 2 are completed.á Modify MarksArray.java to áááááááá output the final chart and average to a file, arrayout.dat, as well as the ááááááááááá screen. [2 marks]

 

 

4.áááááááá Do this only when 1 and 2 are completed.á Modify RandomArray.java to ááááá ask the user how many random numbers they want to be generated, instead of using 1000. [2 marks]

 

¸Define the following terms: [8 marks]

 

ááááááááááááááááááááááá a)áááááááá Message Passing

 

 

 

 

ááááááááááááááááááááááá b)áááááááá Recursive Method

 

 

 

 

ááááááááááááááááááááááá c)áááááááá Superclass

 

 

 

 

ááááááááááááááááááááááá d)áááááááá Overloaded Method

 

 

 

 

 

¸Explain the difference between ôpublicö and ôprotectedö methods and data.

á [4 marks]

 

 

 

 

 

 

 

 

 

 

¸Explain the differences between ôfunction-type methodsö and ôprocedure-type methodsö.á [4 marks]