Tag Archives: Computer Science

Will Computer Science Displace Classic Education?

Photo of 4 elementary school children typing at desktop computers.I believe that technology is now a routine part of our lives and I have been thinking lately about how much effort we should spend educating young students about computers. I read an article that highlighted a push to make computer science mandatory in German schools. My question is, has technology become so commonplace that we treat it like running water and electricity, or can it still provide a competitive advantage for a community or a nation?

Keeping up on Technology

One of the concerns of German lawmakers, which is shared by officials from other countries, is that their students will fall behind and not be able to fill future technology jobs. According to the head of German digital industry group Bitkom:

“IT skills are now as important as the basics. Digitisation determines our everyday lives more and more, for leisure time as well as for work. Schools must teach about media literacy beyond the classroom and give students a firm grasp of IT technologies.”

Suddenly, the tech kids are the cool ones in school. This follows the recent emphasis in schools in science, technology, engineering, and math (STEM). The theory is that partly because of the proliferation of technology, the best and most advanced jobs will go to those who are trained in those areas.

Code.org

In a blog post last year I highlighted the organization Code.org that believes that “every student in every school should have the opportunity to learn computer science.” They are working to increase access to computer curriculum, particularly for women and students of color. Just as the lawmakers in Germany are advocating, Code.org believes that computer science should be part of core curriculum in schools alongside biology, algebra, and chemistry. While I agree that computer science is important as part of a STEM curriculum, I wonder which classes we should drop to make room for it?

Curriculum Replacement

A recent PBS article highlighted a similar push to introduce coding courses in schools in Australia. Computer science curriculum, according to the article, will replace geography and history courses. I am sure that the change will generate a lot of debate around the virtues of a classic education versus a more modern education. It leaves the door open for ongoing conversations around curriculum mix and what students actually need to succeed in the future.

Thoughts

To circle back to my original question, is it necessary to add specific computer science curriculum to schools? Or has technology become so pervasive that everyone knows how to use it, but only a few need to be able to create new and unique applications? In the same vein, should we also introduce mandatory physics courses as well to better understand the underlying hardware? Finally, which courses would you replace? As you look back on your education and career, which classes have shaped you the most and why? Let me know your thoughts.

Author Kelly BrownAbout Kelly Brown

Kelly Brown is an IT professional and assistant professor of practice for the UO Applied Information Management Master’s Degree Program. He writes about IT and business topics that keep him up at night.

Streamline Software Testing with Data Driven Automated Testing

Today’s post is written by Michael Grater, a 2005 graduate of the AIM Program and Quality Assurance lead at R/GA, a digital design firm that provides applications, design, and digital advertising for some of the largest companies. In this blog, we asked Michael to share his thoughts on his experience with the automated software testing process and provide methods on how you can improve your own testing and quality assurance.  In software testing, it is very difficult to anticipate all of the different actions that an end user might want to take. Large applications can often include a million lines of code or more and it is incumbent on the quality assurance professional to test all of the potential scenarios within the application. It is very cumbersome to test these paths one at a time, so it is common to automate the testing into a series of repeated scenarios.  This is much the same as employing a robot to test the new iPhone 6 to ensure that the customer experience is error free.  Often, a 100% success rate is impossible because of the complexity of modern applications, but the method proposed by Michael below will make the process quicker and more efficient and will uncover a higher number of errors that would have otherwise slipped into the final version of the software. 

shutterstock_162820130There are instances in the software testing process when in a shortened amount of time you either have a large number of scenarios to cover or a large number of features. These scenarios may also involve running the same tests repeatedly over a period of time. In cases like this, it becomes advantageous to use a method of test automation known as “data driven testing.”

 

As an example, in most cases, when viewing a login screen, there are essentially two fields and a button, and the steps would look like this:

  1. Open URL,
  2. Click on Login link,
  3. Enter User ID/email address,
  4. Enter password,
  5. Click on login button.

At the same time, there are multiple scenarios when it is necessary to test such features as:

  1. Entering a valid user ID and invalid password,
  2. Entering an invalid user ID and valid password,
  3. Leaving the user ID field blank but entering a password,
  4. Entering a user ID but leaving the password field blank.

Using an automation test tool, the steps can be programmed once and consist of entering a user ID, entering a password, and clicking on a button. Then the test can be configured to run based on data in a file (spreadsheet, flat file, xml file). The data is imported into the test and the execution steps leverage the data to either enter values in fields, provide URL links to be opened, or code values that are equal to features such as buttons or navigation.

The logic behind the test would look like this:

Load data file (contains URL, User ID, and password data)

If

  • Open URL (variable, parameterize),

–  Pull value from data file—insert into test,

  • Click on Login link,
  • Enter User ID (variable, parameterize),

–  Pull value from data file—insert into test,

  • Enter password (variable, parameterize),

–  Pull value from data file—insert into test,

  • Click on Login button.

View page—confirm successful login.

Is there more data?

Then, go to the next record.

Although the test consists of approximately four or five steps, it is configured to loop and execute based on the amount of data stored in the file.

The benefit of doing it this way is that the test can be reused over and over again. If a particular feature has to be retested, the automation test can be executed, generating a report of whether the tests have passed or failed. This also frees up QA staff and allows them time to focus on other areas of the project to test, maybe in places where automation is not an option.

When working with test automation, having adequate time to plan, setup, and verify that the test is working correctly is needed. Test [R1] automation can become a very efficient way to test software but it is not always a viable solution.

This concept can be applied to any automation tool. In my current position with R/GA, we’ve used this technique on multiple projects with tools such as Selenium and Jmeter.

Michael Grater

QA Lead, R/GA New York

Too Many Coders?

Child using a computer with binary code on the screenI have been reading a number of articles lately lamenting the fact that we do not have enough programmers or coders in America and not enough students are entering and graduating from computer science programs. The Kentucky Senate last week passed a bill that would allow for programming classes to count as foreign language credits in public schools. The bill still needs to pass the Kentucky House to become law. There is also the oft-quoted number from the National Center for Educational Statistics (NCES) that only 2.4 percent of current bachelor’s degrees are awarded to computer science majors.

The Argument

I think that the argument is overly simplistic and ignores cycles, needs, and capacity. In terms of cycles, there is a reason for fewer computer science majors today. If you look at the historical trends in computer science degrees displayed in this interactive chart, you will see that computer education peaked at 4 percent of all bachelor’s degrees in 1985 and again in 2004. I believe that the introduction and popularity of personal computers in the late 1970s and early 1980s led to the first peak. It takes four years to complete a bachelor’s degree, so the cycles are offset. Similarly, I believe that the second peak was because of the dot com boom of the late 1990s and very early 2000s. In both cases, it was very cool to be in computers and desirable to pursue computer education. Conversely, the troughs occurred in 1995 and 2009. By 1990, computers had become commonplace but we had not yet entered the Internet boom. In 2004–2006, sizable tech companies and Internet companies such as HP, IBM, EDS, and Cisco were laying off large numbers of employees. My belief is that during the layoffs, an education and career in tech did not look very enticing. Computer science degrees have come out of the trough since 2009 and are on the rise again; that may be in part attributed to the boom in mobile computing. Computing is cool again.

Broad-based STEM Education

That being said, I am a huge advocate of science, technology, engineering, and math (STEM) education, and I think all students should be solidly grounded in those disciplines. They can take that education and those skills into a number of vocations and professions. I don’t believe, however, that everyone needs to become a programmer or be proficient in programming, despite the proclamations of Mark Zuckerberg and Barack Obama on Code.org. I laud their efforts to at least introduce coding to all students but it is just one small part of a larger education in technology and science.

There are other emerging fields that are outside the boundaries of traditional computer science. Perhaps it is a matter of semantics, but students should also consider a career in bioinformatics, which is a combination of statistics, computer science, and biology. This is a chance to apply computing and data analysis skills to the task of gene sequencing and other biological research. There are other emerging fields as well, such as robotics and materials science. Work in all of these specialties is going to take a solid background in math, science, technology, and even some programming. They are all exciting areas waiting for those willing to tackle the rigorous work necessary to make a break through discovery.

My Thoughts

These are exciting times to be involved in computing and analytics and there are diversified disciplines looking for those skills. I think the key to the future is a solid applied STEM education that will prepare students for the challenges ahead. The opportunities are broad and other possibilities should not be ignored by focusing only on programming skills or computer science degrees. What do you think? Let me know.

Author Kelly BrownAbout Kelly Brown

Kelly Brown is an IT professional, adjunct faculty for the University of Oregon, and academic director of the UO Applied Information Management Master’s Degree Program. He writes about IT and business topics that keep him up at night.