[ Home Page | Social Relevance in Computer Science ]
The social aspects in computer science have been recognized back before mainstream computers to a time when the study was largely theoretical. Despite this acknowledgement, integrating social aspects into computer science did not happen on a large scale until this decade (2000-2010) when the enrollment numbers in undergraduate computer science programs fell. The realized benefits for socializing computer science has generated a movement and created enough motivation to trigger a fundamental shift in the teaching of computer science. A shift in the teaching will produce students who possess a wider range of skills enabling them to bootstrap their careers and follow their desires. As a demonstration, I document my own effort to embrace computer science as a social science detailing a socially relevant rental property search application. The process shows the skills required to innovate freely in the market place. In the detailing of the social aspects that surround the project I hope to further contribute to an understanding of the social aspects of computer science.
Social relevance is a concept thoroughly examined and increasingly shared within the computer science (CS) community. Discussions about it appear in online chats and blogs, magazine articles and publications. The concept has been phrased and rephrased as: social service, social science, social relevance, social impact, etc. Regardless of the wording, the shared viewpoint reveals that social context is an important part of computer science and enhances its study. Supporting research reinforces the concept repeatedly advocating for increased focus on studying CS solutions for solving human problems, and for sharing CS concepts within other curricula. The generic problem solving that is a part of the study of CS is applicable across the problem solving spectrum and is not limited to problem solving on a computer [WING06]. Computer science is an enabler to design better interaction between humans and thus lends itself to other studies in social science. The realized benefits for socializing computer science has generated a movement and created enough motivation to trigger a fundamental shift in the teaching of CS. A shift in the teaching will produce students who possess a wider range of skills enabling them to bootstrap their careers and follow their desires.
Socializing computer science has two distinct components: integrating social concepts into the CS curriculum, and sharing computer science concepts outside the CS curriculum. Motivation for these components must originate from within the CS community because there is a general lack of understanding about the subject by the larger, outside community [CART06]. The outside community, which has poor knowledge of CS, does not have the perspective to understand the benefits of, or to instigate in the learning of, CS concepts. Today, there is a widespread call from within the CS community for socializing computer science, but historically this was not always the case. Requests for social integration of CS work and knowledge date back before mainstream computers to a time when the study was largely theoretical. Since that time, the importance of including social aspects in CS has been acknowledged, but without widespread support from the CS community. Steadily declining enrollments in CS starting early in this decade ignited a community wide effort that materialized greater social context into the classroom.
Studies have demonstrated that a lack of social relevance causes enrollments and interest in CS to dwindle. Conversely, it has been shown that CS students can help others and generate greater self motivation for their studies when taught in a socially relevant manner [BUCK04, SHNE71]. There are students who persevere with CS even when their curriculum lacks the connection of social relevance. Students in this situation may be unaware their curriculum is missing this important component. Completing an education in this manner is a grave disservice to the student because understanding social relevance is an important factor to innovate freely in the market place. The experience of relating one's education to real-life applications can help a student relate to others and be creative.
Many graduates will continue on into a confined work environment where the task at hand is highly focused and not usually socially relevant. Social relevancy is minimized in large technology corporations within industries such as aerospace, medical, financial, etc., where client-facing innovation may require an understanding of large code bases or software applications and will usually require vast business knowledge of the subject at hand. Despite the fact that graduates in this situation are working on real-world problems, the scope of their focus is infinitesimally small: integrating a sensor with a real-time processor; creating communication interfaces between hardware of all kinds; adding additional feature support in existing applications; bug fixing within systems as a whole. These examples are countless and demonstrate the focus which will consume many CS graduate students.
Of course, industry needs this work performed. The rapid growth and continued intertwining of computers within products has created a shortage of, and demand for, computer scientists. Some computer scientists are happy, satisfied, motivated and flourish while spending their career involved in highly-focused work which is a healthy and respected line of work. On the other hand, some computer scientists, and students considering CS as an area of study for college, perceive it as leading to a career that will require a seat in front of a computer all day and lacking social orientation [CART06]. Teaching CS without social relevance lends itself to this misperception. A CS graduate taught without social context may not understand the skills needed to direct their career resulting in displeasure and missed opportunities. CS can be a solid base for a career in many fields enabling a student to share their problem solving expertise and apply their CS skills in other areas.
Computer science is socially relevant, yet it has not usually been taught as socially relevant. Socializing computer science as a concept has existed for some time (30 to 40 years), yet it has struggled to influence how CS is understood and presented in the classroom. Today, there is a broad consensus throughout the CS community that it is time to aggressively embrace computer science as a social science. The decline in enrollments became the catalyst for the socialization of CS. The community effort since, has influenced a change in perception about CS and has caused a recent about-face in CS enrollments. There is still a lot of work to be done to support this movement. A comprehensive change to CS will come in many parts and require a wide-spread effort. Effort must be made in part by educators, school administration, and students, as well as by computer science professionals and the community as a whole. There are proven gains to be made in finding a way to continue and strengthen the effort – starting now.
In concert with the theme, as part of this paper, I will present my own effort to embrace computer science as a social science. I will detail a socially relevant rental property search application built as a demonstration of the skills required to innovate freely in the market place. Many of the skills were acquired during my education at Loyola Marymount University, while a few came from my own life experiences. Artistic creativity influences my ability to design and motivate from an idea to a reality. My history of employment since the age of 16 has helped teach me self presentation and accountability. Research has shown the importance of sharing the experience of creating a socially relevant CS project [GRAN97]. It is in the detailing of the social aspects that surround the project that further contribute to an understanding of the social aspects of CS.
The Westside Rentals iPhone application is the socially relevant project that accompanies this paper. It is built for the most widespread, socially focused device available today – a mobile phone. I will discuss from start to finish: creation of a proposal, interactions with a customer, formation of a business, the research, discovery, interpretation, design and development, concluding with the release to the end users and their reviews. Examination will begin with related work in both areas: social relevancy in computer science and my socially relevant application. It will be followed by a brief discussion of the multi-part comprehensive solution to socializing CS. The details of the application will follow with a full overview of the technical aspects behind the applications solution and the feedback from the end-users. Lastly, a concluding section will outline possible future work as related to the socialization of CS, as well as development work for the application.
The sources for related work in this area are numerous and effort has been made to pick the strongest cases to be presented here. A surprising relationship discovered while conducting the research is the similarities to another very thoroughly discussed subject in CS – ethics. Ethics has been an integral part of the CS curriculum for many years and has spread throughout education at the university level. The 2 subjects, socializing computer science and ethics in computer science are intrinsically linked. An algorithm that does not have social implications, by nature, would neither have ethical implications. Therefore, where ethical implications are discussed, social application is always present. With this in mind, the next section will start at the beginning, working to the present, the record of related work as applied to social relevance in computer science.
A discussion of the applicability of social aspects in CS has been documented from before the first microprocessor was created. It is important to note that the widespread use of computers was not a precursor to the idea of socializing computer science. Rather, the idea grew from the recognition of computer science's direct social and ethical implications. In 1965, Baran explored safeguarding systems against misuse anticipating the implication and warning of danger with the advent of personal information stored electronically. In this publication titled Communications, computers and people, he suggested, "What a wonderful opportunity awaits the computer engineer to exercise a new form of social responsibility" [BARA65]. Here he has touched on the very root of our subject and identified the direct social implications. Computers do not live in their own realm, but rather they are an integral part of ours, and can have a direct social impact.
A thrilling discovery stumbled upon during my research was a publication titled Computer Science Education and Social Relevance. Published in 1971, this paper outlines the educational effort made by a teacher named Ben Shneiderman. He believes "...computer science as a theoretical discipline should not be allowed to proceed without promoting the study of the social implications and applications of the field" [SHNE71]. He conducted a course where the "primary goal is to foster an understanding of how computers can be used for socially relevant purposes." Not only are his assertions on point with much of the other related work in this field, but the student projects that were a product of his course and outlined in his paper are some of the most actively used application in circulation today.
The student projects included the following1: a gasoline price monitoring application; a real estate application to help brokers find clients a best-match house; a used car application to assist buyers; an apartment-finding application to assist connecting college bound students and landlords. All of these applications have become mainstream and, additionally, are all available on a mobile phone. If these projects represent a base point for social relevance in computer science, then we already have something to be proud of. Not only does Shneiderman's work demonstrate CS as a solution for solving human problems, but his concluding commentary on the course identifies a core motivator in this movement. He writes, "The students became deeply involved in their projects and felt that they were working on something that was their own. Thus, they were highly motivated and worked hard." The idea that CS students can help others and in turn generate greater self motivation for their studies is one of many benefits to teaching and learning in a socially relevant manner.
During this same year (1971), Norman R Nielsen published a paper titled Social Responsibility and Computer Education. Nielsen mixes the idea of ethical and social responsibility and approaches the issue with caution. He suggests that teachers should not press any specific social moral statement and instead should lay the ground work for a student to recognize the social implications of software and formalize opinions about those implications on their own. His paper focuses more on the approach of ethics in CS, but he concludes, "The important point to realize is that tools can not be taught in isolation." Furthermore, he goes to say:
Since these types of considerations can gradually be worked into courses without the need for major curriculum revision or for the development of large quantities of new materials, faculty members should be able to begin introducing some of the broader social considerations into their courses without delay. [NIEL72]
Absolutely true is this statement today, minus the need for new materials, as will be discussed in more detail in succeeding sections. Concluding with the words "without delay" emphasizes the important recognition of acting on this issue early on.
The first computer science departments started forming at Universities in the 1960's. During the 1970's and 1980's the discipline spread and there was a growth both in popularity and the awarding of degrees. Computers were becoming more common and the idea of socializing computer science could be further examined. A paper published in 1989 by Beusmans and Wieckert suggests "Academic computer science departments rarely support serious consideration of even general issues under the rubric of the social and ethical implications of computing" [BEUS89]. During this time, computer science and technology was growing at extremely rapid rates producing countless areas of new research. Along the way the social implications of computing as a research program fell by the wayside. UC Irvine was the only U.S. Computer Science department with an active research program in this area. Beusmans and Wieckert state, "Few researchers or educators can devote time and/or energy to pursue the social and ethical implications of their work and profession…"
By the early 1990's evidence in the form of research started to appear that showed the social and ethical considerations were an important part of teaching computer science. Questions arose about what these considerations consist of, how to standardize them, and how to appropriately teach them. The latter part of this decade gave way to publications that addressed these questions. In 1997, a publishing by Dianne Martin titled, The case for integrating ethical and social impact into the computer science curriculum, had plenty of positive reinforcing evidence backing the long made claim that social context has its place in CS. At this time, it was well known that in the development of software "...understanding the context of use helps inform and improve the design" [MART97]. So not only is there a social benefit to incorporating this area of study, but there is a proven direct relationship to the quality of the design and implementation of the resulting software.
Martin aggregates the research done on this topic up to this point and reiterates why it ought to be taught and investigating through example, how it can be taught. Clearly stated is the point that brings an understanding to the reader why the movement of socializing computer science did not take hold from the beginning. Martin quotes from a letter originally published in Communications of the ACM in 1996:
… the most glaring problem is that proposed subject matter is not computer science … the content of the ‘strand’ has no algorithms, no data structures, no mathematical analysis, neither software development nor software design, no computer science theory. In short the content is devoid of every standard element present in computer science research and education. … It’s hard to imagine a computer scientist teaching these things. …Ethical and social concerns may be important, but as debating the morality of nuclear weapons is not doing physics, discussing the social and ethical impact of computing is not doing computer science. [MART97]
The frame of mind of this computer scientist is fairly clear – he is closed to the idea of any form of social or even ethical aspect in CS. This assertion is almost comical, if it were not for the set backs thinking like this brought to the community. This position shows that computer science can also be misunderstood within the CS community. Martin addresses this issue well and brings plenty from the more centered camp to the paper. Another work produced in 1997 outlines an organizational approach to teaching social and ethical issues in CS [GRAN97] . In the same spirit as Martin but in a more methodical approach, this paper provides numerous exercises that can assist educators in integrating this subject. Abundant sources throughout the nineties address this exact issue with a strong call: "Computer scientists who are already engaged in its instruction must provide opportunities for others to take the plunge by publishing and presenting their experiences" [APPE98].
At the beginning of our current decade (2000-2010), undergraduate computer science enrollment numbers leveled off and then took a turn for the worse. Figure 1 shows the sharp decline in college computer science enrollment numbers during this period [ZWEB08]. Figure 2 shows a similar story for CS graduation numbers during this time which exposes the sad indication that interest in CS was losing ground [ZWEB08]. Speculation as to why this was occurring began a frenzy of interdisciplinary experiments. Naturally, as a result of the decline in numbers of students, educators started merging classes with other departments to get class volume. Another way of viewing interdisciplinary CS courses is to see that it is very similar to a CS course taught with a healthy serving of context within the lessons. These class trials brought about the previously called for publishing and presenting of experiences as the quantity of research papers produced during this time period shows.

One such publication was produced in 2004 from educators at the University at Buffalo titled Benefits of using socially-relevant projects in computer science and engineering education. The CSE department took a traditional, 2 semester, team project course that had been run the same way for 12 years and redirected the energy of the students toward real-world, socially oriented problems. The real-world problems they approached for use in their projects were those of "…the handicapped, medically frail and technologically dependent" [BUCK04]. In many ways the effort is similar to the course conducted by Shneiderman back in 1971, with the additional benefit of targeting the problem-solving charitably within the community. Unsurprisingly, the results were positive. The students became more excited and more involved, experiencing greater motivation, showing better performance and learning more. Not only that, but even better, "the program has rescued students at academic risk, and the school is enjoying an enhanced reputation in the community." Unfortunately, it took falling interest in CS before changes like this were implemented.
Numerous publications during this time period describe similar experiments. In 2006, another attempt at drawing students into the CS department came in the form of adding concentrations to the CS major, specifically, Business Information and Graphic Design and Implementation. This crossing of curriculum brought added value to the students by providing a well rounded education which includes a CS concentration that is "…consistent with the recommendations of the Association of Computing Machinery for majors in Computer Science…" [BLAH06]. This is exactly the formula for producing computer scientists that are armed with the knowledge and capabilities of a business man. This is another success story where the educators are publicly recognized for their "…ability to work with other disciplines and for developing a CS program that is not only innovative but also is administratively efficient" [BLAH06]. The said reason the teachers tried it was because "…it better serves our students and our profession."
Also in 2006, Jeannette Wing, the President's Professor and head of the CS department at Carnegie Mellon University published an article titled, Computational Thinking. Her assertion, in regards to computational thinking is: "It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use." Wing outlines some of the fundamental lessons a computer scientist learns. She then relates these lessons to generic forms of problem solving and analytical abilities applicable outside the realm of programming on a computer. Her concluding sentences reveal her decree:
Professors of computer science should teach a course called “Ways to Think Like a Computer Scientist” to college freshmen, making it available to non-majors, not just to computer science majors. We should expose pre-college students to computational methods and models. Rather than bemoan the decline of interest in computer science or the decline in funding for research in computer science, we should look to inspire the public’s interest in the intellectual adventure of the field. We’ll thus spread the joy, awe, and power of computer science, aiming to make computational thinking commonplace. [WING06]
A standing ovation ought to follow these words. She proposes a simple solution for sharing computer science concepts using cross-curriculum classes and starting early in college-prep. She swiftly redirects our sight to inspiration rather than desperation. She connects with computer scientists by expressing what CS means to her through her words of "joy" and "awe." These words are powerful, and if they were to make it to the desk of every CS educator, they may just bring the community together in a newly inspired way.
Expanding on Wing’s attention to pre-college students is another publication that came out the same year titled, Why Students with an Apparent Aptitude for Computer Science Don't Choose to Major in Computer Science. Eight hundred and thirty six calculus and pre-calculus high school students were surveyed with general questions about their experiences with computers and their general knowledge and overall interest in CS. It was discovered that these "…students are severely lacking in experience with computing…" Additionally it was found that "the vast majority of students had no concept of what a computer science major entails." To increase enrollments in CS there has to be increased interest and understanding starting at the college-prep levels. This survey is proof of the misconceptions and lack of knowledge about CS from the primary candidates, high school students [CART06].
The last few years gave way to many successful interdisciplinary methods and an acknowledgment that the traditional teaching style is no longer relevant for students. As educators made the changes necessary to accommodate social relevance and context in their teachings, it became apparent that the reference materials core to these teachings were lacking in relevance as well. As mentioned previously, in the 1970's these materials seemed adequate for the time, but today the majority of examples and assignments used are insufficient.
A publication titled Note to Self: Make Assignments Meaningful gave some very grim statistics for relevancy in CS assignments. Analysis of assignments across the first year CS curriculum (CS1) exposed "only 34% of the CS1 projects had a practical or socially-relevant context, 41% had no context at all, and 15% were games" [LAYM07]. There is no comparison here to the direct relevance a student experiences in other subject matter. The computer science curriculum seems to struggle more than other academic disciplines in its careless social consideration and lesson content. In an assessment of nearly 200 CS1 projects it was found only "2% of all CS1 assignments had any sort of social relevance." Further more, "…an average of 16% had no practical context" what so ever [LAYM07]. It is hard to come up with examples so irrelevant in other subject matter, but for CS it has plagued every aspect of the curriculum. Why? Why do the authors and educators in CS use irrelevant examples? Instead of a pie throwing simulation game, why not simulate a car crash or the trajectory of someone not wearing their seat belt? Two percent is not much direct relevancy in all the literature and lessons used in CS1 courses.
In 2008, Michael Buckley co-published a paper titled Socially Relevant Computing and again in 2009, Buckley reiterated the same arguments in a Viewpoint article titled Computing as Social Science. The second publishing, respectively, was the original inspiration behind the research for this paper. When I read the article, I went to my bookshelf and found his following statements to be entirely true. He says, "There isn't a textbook out of the 80 I have on my shelf that makes me see computing as socially relevant" [BUCK09]. He compiles a list of example lessons in the texts used to teach freshman CS students:
…multi-chapter case studies on stick and coin games (Java Java Java, Morelli), a program to optimize pizza purchases (AbsoluteC++, Savitch), puppies and ducks as examples of integer length and class definition (Head First Java, Kathy Sierra) [BUCK08].
In the first 10 textbooks I've skimmed, I've learned how to count ducks, categorize puppies, separate cows from horses, manage a pet store, create a cyber-pet, add fish to a bowl, and so it goes. This can't possibly be the least bit interesting to a freshman who wants to learn computing [BUCK09].
This analysis and introspection on the CS curriculum and texts surfaced primarily after the decline in CS enrollment numbers. If it were not for the decline, CS as a curriculum may have gone on in the same fashion as it had for the 30 years before. The technology advancements and new areas of research have never slowed pace since the beginning. Bringing relevancy and removing childish game ridden examples from texts has been ignored while research in other prominent areas of CS has steamed forward. This shift in philosophy about examples and supporting texts needed to be made despite the declining enrollment numbers. The examples quoted above clearly demonstrate that the CS curriculum is detached from social relevancy unlike any other curriculum taught in school. It is a positive change that this issue has been identified and brought to the forefront and the transition to producing new relevant materials can now be made.
There is no time like the present to turn a new leaf in the study of computer science. Research must proceed to find the best approach to bring social relevancy into the CS curriculum. The next sections cover the background and related work that accompanies the Westside Rentals iPhone application. The purpose of this application is to assist a mobile user in the search of a rental property.
Searching rental properties is limited only by the fact that a customer is tethered to web access. Copying down listings of interest to paper or printing them before calling or trekking out for viewing is an additional step for the customer. The initial vision for this application originated from Dustin Brown, a student at Loyola Marymount University. He is the visionary who proposed this idea to me and who initiated a connection with the owner of a popular rental property search website, WestsideRentals.com. Brown is not from a background of CS but he understood the potential an idea like this had to improve WestsideRentals.com through the creation of an interface that allows a user to be mobile while still providing access to the information.
WestsideRentals.com is used frequently by college students and it continues to be a leading site for apartment searches. Started in 1996, WestsideRentals.com has helped more than one million renters find homes. The business model starts with providing free vacancy listings for landlords and charging potential tenants a membership fee to view and search the listings. WestsideRentals.com boasts a comprehensive, accurate and up-to-date database of potential rental properties.
Brown and I had an exhilarating conversation one afternoon regarding this potential application. I committed to the idea with enthusiasm and within days a lunch meeting had been arranged with the owner and the CDO of WestsideRentals.com. In preparation for the meeting, I created use-case scenarios that framed the overall layout and design of the application.
The platform that Brown and I thought best suited for this application is the iPhone. The iPhone has the built-in ability to install custom applications anytime, anywhere, making it a perfect platform for application development and deployment. Its popularity, available SDK and unique interface provide additional incentives for companies and developers looking to take their applications mobile. Among the different mobile platforms available, the iPhone provides a popular, attractive interface for both users and developers. Since the release of the iPhone, it has captured over 10% of the market share worldwide in Smartphone sales [GART09].
The proposed business value that my application can provide to WestsideRenals.com is of 2 forms: generating new business and generating new data. New business includes customers and landlords – customers who use WestsideRentals.com solely because of mobile access, and landlords who choose WestsideRenals.com because of its expanded access to potential tenants. New business for Westside Rentals is the primary goal and can be measured as directly associated with the quality and popularity of the application. New data includes customer ratings, comments/reviews and pictures that can be created on-site during a walk-through (tour) of a potential rental property. This is a future goal for Westside Rentals and will require the implementation of more advanced functionality with in the application.
Customers today are in a hurry. They prefer to quickly manage their obligations in order to have more time for pleasurable activities. Moving is a stressful process for many people and providing a faster and more fluid path through the process equates to less stress and allows more focus on the many other aspects of moving. Landlords are also interested in advertising their property in a more fluid manner to bring occupancy to their rentals more quickly and improving returns with less effort. There is a need to provide a service without tethering customers to their computer. A mobile application enables customers to continue their daily activities and search for a new home when time permits such as on a train, in a car, or at home on the couch. The following is a list of requirements that must be met to fill the customer and market needs: software must be mobile; it must provide full equivalent access; the interface must be easy to use and assume no user instruction; utmost are performance and responsiveness; it must be sufficiently robust to handle the mobile environment.
I had not previously developed for the iPhone platform, but I was not held back because my studies had provided the experience of learning new languages and developing on new platforms. I knew of the additional learning curve that would be required to develop on an entirely new platform in a new language. I was confident of my abilities and excited by the potential opportunity to create a real application for a real customer, and because of this, the lunch meeting with the owner and the CDO of Westside Rentals was met with success. They felt my enthusiasm, understood the potential, and offered me the opportunity to build this application for them. We worked out the basic business details which included a down payment for the idea and for the building of an initial application. The CDO gave me an overview of their server architecture (discussed in more detail in the solution section), had me sign a nondisclosure agreement, and provided me access to the database server.
The background covered here shows the process of creating a proposal and interacting with a customer. Before proceeding into further details about the application, there are two related works that can provide insight to the design and implementation of the application. At the onset of the idea for the Westside Rentals iPhone application no other application existed for the iPhone that could provide access to rental property listings. During the first few months of development on the Westside Rentals iPhone application another application of this type became available. This application is called ApartmentGuide.com and it will be examined as a related work following the discussion of Trulia, an iPhone real estate application.
Trulia is an online, comprehensive, real estate search web application. They recognized the potential of an application built for the iPhone providing access to this wealth of real estate information. Trulia hosts 5 million active buyers and sellers each month and offers a range of products, both free and subscription based that assist in the buying and selling of real estate. At the time of this writing, the application had been downloaded over 70,000 times. Although the application is based on real estate, the basic features and layout of the application is very similar to the Westside Rentals iPhone application. The volume of users of this application produced a substantial set of user reviews which can act as guide to improving a similar application. More details about Trulia's use-case designs that influenced my application will be discussed in the solution section [TRUL09].
ApartmentGuide.com is a web application that is the primary facet of Primedia, Inc. which has been in business for 33 years. Primedia, Inc. delivers rental information to customers via print and mobile devices as well. In September, 2008, they launched an iPhone application which presents a direct competition to the Westside Rentals iPhone application. At initial launch, the features were limited and the application received bad reviews with a 2 out of 5 star rating. A top complaint was that no search filters were provided to limit the search results and there were no other advanced features included in the application. This was an important guide for what is considered crucial to the customer and helped prioritize the feature implementation in the development of my application. The overall layout and design of the user interface was unattractive and its implementation caused odd artifacts while scrolling a page. This application served as a good reference to take general notes from but did not provide any new ideas for my implementation [APAR09].
The related work covered in the previous section makes a strong case for socializing computer science and the solution suggested presents itself in many forms touching multiple areas of CS. The integration of social context within a CS course and the creation of cross curriculum learning have been well studied. Calls for research in this area should continue as well as the sharing of work related to understanding the social aspects of CS. The success stories experienced in a CS department should be applauded by the school administration to reinforce the work with their support. Computer Scientists in both the academic and professional arenas can help accelerate the socialization of CS by becoming involved and understanding the issue. Updating and replacing texts that have left out socially relevant examples with new materials that embrace the idea will further assist in the teaching of CS and can have a positive impact on the movement overall.
A master’s thesis program provides a student with the opportunity to research and dedicate a significant time investment to finding a solution to a problem. The computer science curriculum has been a rewarding experience encouraging me to support socialization in CS to encourage others towards its study. Clearly, there are skills required to be socially relevant as a computer scientist including the ability to interact with clients, understand business models, support development structure and teamwork, and most importantly, think outside the box to apply CS skills socially. Investigation and demonstration of these skills is the investment I made towards the thesis program. Through the analysis, sharing, and discussion of the social aspects of computer science I hope to bring further attention and support to the movement. Undertaking a socially relevant project that required a wide range of social and business skills is the key motivator and yields a usable application for a real customer providing me with earnings. This thesis thoroughly demonstrates the skills required to innovate freely in the market place. The remainder of this section will continue the exploration of the rental property search application in depth. The content of the following sections contains low-level architectural and implementation details of the WestsideRentals.com iPhone application.
After the proposal was accepted by the client, there was a significant amount of work to get setup before development could begin. The first (administrative) step was registering for the iPhone Developer Program. The iPhone Developer Program allows a developer to submit an application to the iTunes App Store which serves as the platform for the distribution of all iPhone applications. Enrollment in the program requires a developer to first register with Apple as an iPhone Developer. The next step is to register for the Standard Program which provides distribution in the App Store for a nominal fee of $99 for 1 year. The registration process for this program requires a developer to indicate their development intentions. Since I was developing an application on behalf of another company, the program requires that I become my own company and provide proof of this in the form of a business license.
The first step to get a business license required me to start what is called a sole proprietorship. A sole proprietorship can be created by visiting the business branch of a local bank; I visited Union Bank of California. They assisted me in opening a new business account and creating what is called a DBA (doing business as). As long as the name of the business includes the full name of the owner, extra (rigorous) steps to acquire a business license can be avoided. In my case, I chose "Joseph Barrett Software" as the name of my business (DBA). The account specialist guided me through the process and deposited into a new account the check I had received as a down payment for the application. The next step was quick and involved calling the IRS and requesting a Federal Tax ID Number known as an Employer Identification Number (EIN). On the phone the IRS agent will ask simple questions about the business, such as the name, who is involved and what is its purpose. At the end of the conversation they will issue the EIN.
These are the requirements to apply for a business license in my local area (Huntington Beach, CA). I obtained the application from the local government website and filled it out with my business name, EIN and the other relevant information. It cost $100.16 for the business license, which I mailed in with the application. Within a week I received a copy of my business license in the mail. Figure 3 shows a copy of the license. This empowered me with the required license to develop on behalf of another company. I scanned the license and submitted it electronically to Apple. After another week, I received an email that guided me through the final steps of accepting licensing agreements and registering for the program. Upon the completion of that process, I became an official member of the iPhone Developer Program.

The scope of the application and the major features can be broken down by development phase. The features listed below are in order of priority and are comprised of current features supported through the WestsideRentals.com website as well as new features that can only exist in a mobile platform. This paper only examines the process through the initial release phase.
The initial release phase creates a foundation for the application with basic feature support. The features included in this release are essential to allow a current WestsideRentals.com customer access to property listings on their iPhone. A customer should be able to log in, search and view listings. Many of the other features in successive phases are important too, but limiting the scope to these essential features is necessary to allow for other development start-up costs like licensing and development environment setup. After the completion of the initial release, reoccurring costs will be minimized and the focus can be on new feature integration.
The architecture can be broken down into 2 main components: server-side and clientside. The details of each will be covered in their respective sections. Discussion of the development can be split as the actual implementation required separate platforms, languages, and integrated development environments, producing challenges unique to each component. The single joining link between the 2 components is the channel where communication and information flow. This channel is an HTTP connection using JavaScript Object Notation (JSON) as the transport language. The next sections will explore the two main components (server and client) in detail.
The server-side environment is dictated by the setup already in place at WestsideRentals.com. Their database servers are Microsoft SQL Server 2005 and the web servers are the Microsoft 2003 Server platform. Their website is written in ColdFushion and is hosted on the OS integrated web server called Internet Information Services (IIS). The serverside portion of the iPhone application would simply need to expose web services for the iPhone to communicate with. One way to integrate with this environment smoothly and provide the required functionality is to write a Microsoft .Net web service. I had previous experience in .Net web services written in C# and decided to go that route.
Besides accommodating a simple integration with the existing environment, the other 2 server-side goals are performance and simplicity of implementation. In the beginning stages of development XML was used as the transport format. Data represented as objects would need to be serialized (as XML) to be transferred back and forth between the server and the client. For reasons dictated primarily by the client-side application, and further described in that section, I switched the transport format to JSON. This change also simplified the server-side architecture dramatically as I was able to serialize into JSON directly from dictionaries built off the SQL queries run on the database. This implementation proved to be simpler than using XML because there is no support for automatic serialization of dictionaries to XML in C#.
The server-side development environment consists of a computer installed with Windows XP SP2 with IIS 5.1, .Net 3.5 with Visual Studio 2008 and SQL Server Management Studio (installed with SQL Server 2005). I was provided with the credentials to connect directly to the WestsideRentals.com SQL Server instance and began by inspecting their database using SQL Server Management Studio. The search query used by WestsideRentals.com was already written as a stored procedure and could be reused in my application. For user authentication within the iPhone application I needed a simple SQL query to authenticate and authorize based on a users membership status. The only other information required from the database is indexed tables that resolve values that are part of the search results. The static nature of these indexed tables enabled me to cache them in the client application increasing performance and shrinking data transfer sizes (further described in the client-side section).
The implementation of the server-side code consists of a C# web service project in Visual Studio. The publicly exposed web service page (asmx page) has only 5 web methods: Login, Logout, Search, SearchRecordCount and GetListing. In the initial release phase, only the first 3 of these, respectively, are used. There are 4 classes that represent concrete instances of the serializable object information: AuthenticatedUser, CoreSearch, Listing and LoginCredentials. One other component is a data adapter which provides the interface to the database.
When a client application calls the Login web method it must pass a serialized version of LoginCredentials which consists of 2 properties, username and password. This method makes a call to the data adapter which executes an SQL query to verify the credentials. If the user successfully authenticates, the data adapter returns an instance of AuthenticatedUser which contains information such as a login ID, membership ID, and the common name of the user. The web method uses this object to set the appropriate cookies in the response that returns to the client. The Logout web method clears away any cookies that had been assigned at login.
The Search web method has only one parameter which is a serialized instance of the CoreSearch object. The CoreSearch object is made up of properties that are one-to-one to the parameters of the Search stored procedure in the database. This includes parameters like zipcode, high/low price, number of bedrooms and bathrooms, etc. The web method simply deserializes the CoreSearch object and, using reflection, builds the parameters into a SQL stored procedure call that is executed on the database. The query result is a table of property listings where each row in the table is extracted into a Listing object. All the Listing objects are then serialized and returned by the web method to the client.
The server-side implementation has no complex logic and is essentially a wrapper for calls to the database serializing and deserializing as information passes through. I was able to achieve seamless and almost effortless integration with the existing environment, high performance and simplicity of implementation. The published version of the code was placed on a set of load balanced servers at WestsideRentals.com. The real complexity of the application is client-side and will be described in more detail in the following section.
The architecture of the client-side application can be broken down into a several major components: a web service client, serialization handlers and object models, cached resources, graphics and graphic controllers. Each will be covered in a separate section with details about how they integrate with the application as a whole. The deployment and a survey of end-user feed back will come after examining the architecture and general functionality. The goals clientside are the optimization of memory and performance, ease of use, and simplicity of the implementation. The client-side environment is dictated by the requirements for developing an application for the iPhone. The development environment consists of OS X 10.5 installed with the Xcode IDE, the iPhone SDK for iPhone OS 2.2.1, and programming language Objective-C. An examination of the client to server communication (web service client) will be covered next.
The iPhone SDK provides a rudimentary API for requesting data from a server. There are no specific handlers built into the library for different protocols. To communicate with a .Net web service, the SOAP protocol is the standard. I had difficulty finding information or examples of other iPhone applications that use a .Net web service server-side. I found an example that misled me down a path I later backtracked from. A web service definition language (WSDL) tool can automatically generate client-side code enabling client to server communication with little to no hand programming. This tool is available for most common programming languages. The misleading example I found used a (WSDL) tool seeming like a perfect solution for my situation. It was not until a test-install of the application on the physical device (iPhone) that I discovered, much to my dismay, the libraries used in the automatically generated code are not supported by the iPhone SDK. For myself and the author of the example (who later found out for himself), the code ran perfectly inside the iPhone simulator delaying this unfortunate discovery. When the code runs in the simulator, the libraries that are required are available from the Mac OS X runtime. On the iPhone, these libraries are not available.
The correct solution to implement a web service client is to use the rudimentary API and to format the request headers of the service call correctly for the SOAP protocol. The web service client I implemented is capable of calling a generic SOAP web service and interacting with its web methods. It can pass the required parameters, cookies and parse the result while gracefully handling errors. I wrapped this generic web service client with a class that provides the ease-of-use comparable to auto-generated client-side code which enabled easy communication to the web methods I had written server-side.
Throughout the development of the application a lot of research lead to new discoveries and code re-factoring. The serialization handlers and object models were no exception. The original implementation of the server-side web service serialized results as XML, which is a default standard in .Net. On the Client-side, this requires custom built XML parsers that can manually extract the data from the XML into a local object for each object type. Initially, I began implementation using this method. The iPhone SDK provides an API with a base XML parser that can be extended to parse custom XML. While implementing a parser for one of the few object types that the application required, I started questioning whether there was a better way. The implementation of the parser is very verbose and specific to the XML object being deserialized. Detailing the XML elements (over one hundred for a single object in my case) to be extracted in a hierarchical manner and building a subclass of the base parser for each object type to be parsed is not very scalable. I had previous experience replacing XML with JSON as a transport format and decided to investigate how it could be implemented for use in this application.
Traditionally, the standard for transport format in web communication was XML. In the last few years, JSON has taken a leading role as the preferred transport format for a number of applications. One reason it is preferred is that it can significantly reduce the number of characters (reduced data representation size) if the data is heavily nested. Additionally, it can be simply decoded into an instance of an object when used in JavaScript. For my application it would serve to significantly reduce the data (packet) size. To my benefit, I discovered an iPhone compatible JSON library that substantially reduced the coding required to serialize and deserialize objects.
The JSON library is called json-framework and is an open source software project hosted on Google Code. It can serialize and deserialize, to and from, all the basic Objective-C data types as well as dictionaries and arrays. Conveniently, this led to designing the data models (classes) as objects that wrap the basic types. Essentially, in JSON jargon, the Listing and CoreSearch classes became wrappers around dictionaries, and a list of rentals can be translated from an array of dictionaries. This solved my (XML) scalability crisis and simplified the implementation of the objects that model the data. I was able to insert the JSON in place of the XML implementation in my custom web service client and return these greatly simplified objects from those methods.
Indexed data stored in the WestsideRentals.com database is part of both the search parameters and search results. Resolving an index to a value is required to correctly display data to the user. A few of the parameters in the search stored procedure are comma delimited lists of indexed values, further complicating resolution. The resolve of index-to-value can occur either server-side or client-side. A server-side implementation would require resolving the search parameter values to an index, parsing and resolving the indexes for lists, and also resolving all the indexes back to values before returning data to the client. A client-side implementation would allow indexes to be resolved as need by keeping the indexed values indexed, and only resolving them if they are to be displayed. Additionally, the indexed search parameters can be matched to their values from a cache of indexed data if it is stored locally, client-side.
I was informed by WestsideRentals.com that the indexed data never changes making it a perfect candidate for client-side caching. The iPhone supports SQLite which is a light-weight database. Mozilla Firefox has a plugin that can manage a SQLite database. I exported the static indexed tables from the server-side database and imported those same tables into the SQLite database using the Firefox plugin. The result is a local (client-side) database able to resolve indexed values for display and able to resolve parameters for the search stored procedure. Beneficially, this implementation required no server-side code changes because indexed value resolution is handled client-side. Client-side performance using a local database for value resolution is excellent and keeping values indexed for data transfer between the server and client ensures packet size is kept to it's smallest (indexed) size.
The essence and usability of an application for an end user comes from its layout and design of the graphical display. The goal driving the design of the graphical component is to provide ease of use and simplicity so no instruction or manual is required. The applications top level graphics are screens referred to as views in iPhone development. To achieve all the required functionality, 6 different views are used; 3 views to handle the searching and filtering, and 3 to handle the results display of property listings. The 2 logical sets of views will be covered in separate sections next.
When the application launches, the initial view is the search view as shown in Figure 4. This view is the base view for setting the search parameters or filters, such as zip code and number of bedrooms. The design of this view is a result of consideration of the design of the previously discussed related work, Trulia. Trulia’s search display shows all available filters preset with default values on the main view. This clutters the screen with filtering and information that may not be relevant to a user. In designing my applications search view I opted to place the filters in a separate view and created an add filter button to access this separate view from the main screen. By clicking that button the user is taken to the filter view as shown in Figure 5.

The filter view is simply a listing of all possible filters that can be added to the search criteria. Clicking a filter takes the user to the list of items representative of that filter. For example, if a user clicks the Rental Types filter, a new view is shown that contains the possible rental types that are part of this filter as shown in Figure 6. This third view (Figure 6), that displays the items representative of a filter, is called the search filter items view. This view will look different dependent upon the filter that has been selected by a user. A filter that allows multiple selections, like the Rental Types filter, will contain a done button displayed in the upper right corner. A user can limit the search to the search filter items of interest, clicking done when finished. Clicking done returns the user to the search view where they will see any filters that have been added. Figure 7 shows the resulting search view after selecting the Rental Types filter and choosing the filter items, Houses and Apartments. Clicking the red indicator next to the filter on the search view will delete the filter, or clicking the filter in the center will take a user back to the search filter items view where further adjustments can be made on the filter.

Some search filter items are limited to a single selection, for example, the number of bedrooms is displayed as n or more (2 or more, 3 or more, etc.). Single selection filters do not have a done button displayed. As soon as a user makes a selection, the filter is added to the search criteria and the user is automatically returned to the search view. A simple adjustment of the UI for this use-case saves a user an extra button click.
A special-case search filter item view is that of the Price Range filter shown in Figure 8 and Figure 9. This view is an improvement on a similar implementation from the related work, Trulia. Trulia’s implementation of the Price Range filter allows a user to make a selection that does not make sense such as a minimum price of $1000 and a maximum price of $500. It is not until a user clicks the done button that a pop up dialog alerts the user of the mistake and forces a correction before continuing. To improve the usability I programmed the range restriction logic into the price range selector so that it is impossible to make a selection that does not make sense. Any selection that causes an invalid range will automatically adjust the appropriate selector to make a valid range. An additional display of the price range selection is added at the top of the view so a user can see exactly how their selection is interpreted as a search parameter. Clicking done will add the filter to the search criteria and return the user to the search view as shown in Figure 10.

The 2 most common search criteria, location and search radius, are always displayed in the search view. The location filter is a required field where a user must enter a zip code to specify the search area. Most iPhone applications that require a location use the location services (GPS) SDK to automatically resolve a user’s current location. There are some nuances that make using this library difficult including the necessity to resolve the latitude and longitude to a zip code which is the required parameter on the search stored procedure. The functionality can be added in a later phase and plugged into the current implementation with minimal refactoring.
The current implementation instead accepts a zip code (see Figure 11) which is verified by a local cache of zip codes stored in the previously described SQLite database. This prohibits a user from entering an incorrect zip code. The search radius can be adjusted in the same manner as a single selection search filter. Clicking the filter in the center takes a user to the search filter items view where the search radius can be appropriately adjusted. Finally, when the user is finished entering the search criteria, they can execute the search by pressing the search button located in the upper right corner. Figure 12 shows the final selections just prior to pressing the search button.

Once the search button is pressed, a user is directed to the property listings view which is the base screen for viewing search results. This view was the most complicated to create because there is a lot of information to organize and display as well as performance and image caching to be considered. User interaction is simplified though because the search results are read-only so there is no user input aside from navigation. Figure 13 shows the property listings view. Each property listing in the search results contains a set of URLs that point to the images associated with the listing. There is a single URL that points to the main image. To retrieve a single image, a separate request to the web server must be completed. With many images, an individual request must be sent for each. These requests can quickly add up and in the mobile environment web server calls should be minimized for performance, memory and battery life. The solution is to only retrieve an image for a listing that is currently displayed. The images must be retrieved on a separate thread so as not to block the user interface. They must also be cached so there are no repeated requests for the same image. This implementation was dictated by the demands in the mobile environment complicating a simple activity like showing an image on screen. I was able to successfully implement these requirements and the resulting performance and functionality is positive.

The selection of a property listing from the property listings view will take a user to the listing details view as shown in Figure 14 and Figure 15. This view shows detailed information about an individual property listing. An implementation challenge of this view was the display that lists in text the details about the property. All other text shown throughout the application is made up of individual labels. The quantity of text to display the details of a property would have required a complicated layout of a large set of labels. Instead, to display and format the text appropriately I used an imbedded web view. A web view displays HTML which can be autogenerated and formatted very easily. I wrote a method that returns the listing details as HTML using style attributes to customize the formatting. The listing details text in Figure 14 shows the result.
The listing details view includes contact information for a rental property as well as a link to open and view the property on the WestsideRentals.com website. Clicking the phone number displayed in this view will cause the iPhone to initiate a call directly to that number. The selection of an email address will open the email client on the iPhone and automatically plug in the recipient’s address into a new email composition. Clicking Show on WestsideRentals.com opens the Safari web browser to view the property listing directly on the WestsideRentals.com website. This single click to contact functionality yields a rapid way for a user to get in touch with a landlord. Figure 15 shows an example of the contact information. The final view of the three views that make up the display of property listings is a slide show of images associated with a single listing. It is accessed by clicking the top (image/summary) section in the listing details view. It simply loads all the images associated with a listing and displays them in a slide show to the user. Despite the challenges encountered while implementing the display of property listings, I was able to achieve the necessary performance and ease of use required for this application.

Despite the hundreds of hours put into development of this application the features provided in the initial release phase are not extensive. Customers can only search and view listings and I anticipated negative reviews for not having more advanced features as I had seen requested in the related work applications. One challenge that was always at the forefront of the programming was memory management. Objective-C requires the developer to manage references and to clean up objects after they are no longer needed. This was challenging for me because I have not developed a significant application in a language that does not support automatic cleanup (garbage collection). Another challenge was the lack of content on the web to help answer questions that arose during development. The iPhone development program has a non-disclosure agreement that had previously prohibited communication of any kind by developers and thus held back the creation of blogs and forums that are an absolute necessity for a developer programming in any language.
During my personal use and testing of the application I felt confident I had met my goals of ease of use and optimizing memory and performance. The final compliment to my development work was the submission to the iTunes App Store. Upon submission of an application, Apple performs a rigorous review of the application searching for memory leaks, inconsistencies and bugs. If any are found, the application is rejected and the developer must fix and resubmit it. I had the honor of having my application accepted on my first submission which speaks to the time and effort I took to achieve my goals. Figure 16 shows the application hosted in iTunes and available for users to download to their iPhone.

The WestsideRentals.com application has been downloaded over 800 times since the release on March 30, 2009. From 96 ratings, the average is 2 of 5 stars. One primary complaint is the lack of support for the application on the iPod. The SDK for the iPhone and iPod are identical and the application most likely would run on both equivalently. Since I do not own an iPod and could not test the software on it myself, I limited the release to the iPhone only. A flag can simply be changed with out recompilation that will allow this application to be installed on an iPod. Until the application is able to be tested on the iPod I do not wish to switch this flag. There is a user review that claims the login will not work on his first generation iPhone. This would be a worthy case for inspection and debugging. The other low ratings are from users who wish for more features. Hopefully with the release of later phases, these users will be more satisfied.
The experience of working on a socially relevant project has demonstrated to me how it can help inspire and generate greater self motivation. The work is still hard work and there are no easy outs, but the feeling of inspiration empowered by a socially relevant project eases the difficulties. There are many more phases for the Westside Rentals iPhone application. The future direction of the application will be dictated by the requests from the owner and CDO at Westside Rentals. It was exciting to experience the creation of my own business and has opened the door and given me the know-how to materialize future projects and ideas into a reality. ideas into a reality.
Interest in computer science has now been on the up-rise just this year (2009) for the first time in this decade. The extensive effort made by everyone involved in the process is beginning to payoff, though this is only the beginning. To achieve a comprehensive change in CS requires a wide-spread effort made by everyone involved in CS. One of the most promising areas of research in CS is in finding a way to improve the literature and example material used to share and teach CS. It would be worthwhile to find an answer to the proposed question: why is it that the CS curriculum suffers so badly from careless social consideration and lesson content? Answering this question could lead to the necessary changes that need to made in these materials and provide a better understand about CS to the community at large.
Continuing to improve the social context of the CS curriculum in an important factor in helping a student understand their career options and can guide a student to innovate freely in the market place. The research has shown the importance of sharing the experience of creating a socially relevant CS project. It has also shown the importance in familiarizing college-prep students with the general concept of CS. This paper thoroughly covered the related work in both socializing computer science and a socially relevant project. The solutions to both were examined including a look at the technical details of the Westside Rentals iPhone application. The future needs for computer scientists will only grow stronger as the integration of computers in products continues. It will benefit the community at large to come together in an understanding of CS and its social relevance.
[APAR09] Apartments. 2009. Primedia. http://www.apartmentguide.com
This website is a related work and contains information about the Apartment Guide iPhone application. Apartment Guide served as directly comparable to my iPhone application. It provided insight into the successful traits of a rental search application.
[APPE98] Appel, F. 1998. Including the social and ethical implications of computing in the computer science curriculum. In Proceedings of the Ethics and Social Impact Component on Shaping Policy in the information Age (Washington, D.C., United States, May 10 - 12, 1998). T. Jewett and K. Miller, Eds. ACM POLICY '98. ACM, New York, NY, 56-57. DOI= http://doi.acm.org/10.1145/276755.276777
This is a short article about the need to include social and ethical considerations in CS courses. It encourages those involved in the teaching of CS to start integrating these concepts immediately. It supports the main arguments set forth in this paper.
[BARA65] Baran, P. 1965. Communications, computers and people. In Proceedings of the November 30--December 1, 1965, Fall Joint Computer Conference, Part Ii: Computers: their Impact on Society (Las Vegas, Nevada, November 30 - December 01, 1965). AFIPS '65 (Fall, part II). ACM, New York, NY, 45-49. DOI= http://doi.acm.org/10.1145/1464013.1464022
This is an early work that supports the recognition of the complexities between people and computers. He suggests and recognizes the need for safeguards against misuse of data. This is one of the earliest papers that I could find suggesting social consideration as applied to CS.
[BEUS89] Beusmans, J. and Wieckert, K. 1989. Computing, research, and war: if knowledge is power, where is responsibility?. Commun. ACM 32, 8 (Aug. 1989), 939-951. DOI= http://doi.acm.org/10.1145/65971.65973
This article focuses on responsibility as applied to CS with a specific look at war technology. There is a tone of responsibility throughout the paper that supports the thesis in this paper. It is also noted that social responsibility has been left out of the research and CS courses.
[BLAH06] Blahnik, J., McVey, B., and Pankratz, D. 2006. Adding concentrations to the CS major: our dean calls us 'innovative'. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education (Houston, Texas, USA, March 03 - 05, 2006). SIGCSE '06. ACM, New York, NY, 191-194. DOI= http://doi.acm.org/10.1145/1121341.1121400
This paper supports cross-curriculum courses and documents the success of an effort made at the university to add concentrations to CS major, effectively creating crosscurriculum courses. The positive results of their effort support the thesis in this paper. It also supports the increased student interest and enrollments that were a result of this effort.
[BUCK04] Buckley, M., Kershner, H., Schindler, K., Alphonce, C., and Braswell, J. 2004. Benefits of using socially-relevant projects in computer science and engineering education. In Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education (Norfolk, Virginia, USA, March 03 - 07, 2004). SIGCSE '04. ACM, New York, NY, 482-486. DOI= http://doi.acm.org/10.1145/971300.971463
This paper describes and effort to include social relevance in a computer science course by forcing the students to pick socially relevant projects. This paper is similar to other sources in the effort made as well as the conclusions. It supports the thesis of this paper through the positive results of the socially relevant course.
[BUCK08] Buckley, M., Nordlinger, J., and Subramanian, D. 2008. Socially relevant computing. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education (Portland, OR, USA, March 12 - 15, 2008). SIGCSE '08. ACM, New York, NY, 347-351. DOI= http://doi.acm.org/10.1145/1352135.1352255
This paper points out the decline in CS enrollments and graduation numbers and discusses the effort made to create more socially relevant courses within the CS curriculum. It points out the lack of solid study materials and the child-like examples used to teach CS. It provides further support for argument set forth in this paper.
[BUCK09] Buckley, M. 2009. Viewpoint Computing as social science. Commun. ACM 52, 4 (Apr. 2009), 29-30. DOI= http://doi.acm.org/10.1145/1498765.1498779
This article is a powerful discussion of the state of CS as a social science. This article was the inspiration for this paper. It supports a change to teaching CS as a social science and integrating socially relevant problems into the teaching of CS.
[CART06] Carter, L. 2006. Why students with an apparent aptitude for computer science don't choose to major in computer science. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education (Houston, Texas, USA, March 03 - 05, 2006). SIGCSE '06. ACM, New York, NY, 27-31. DOI= http://doi.acm.org/10.1145/1121341.1121352
This paper reports on a survey of high school students and their general understanding of computers and CS. The results indicate a lack of understanding about both computers and CS and a general dislike of the subject. It supports the thesis in this paper as well as helps demonstrate the general lack of understanding by the community at large. The misconceptions the survey reveals indicate a need for better teaching of CS.
[GART09] Gartner. May, 2009. Gartner Says Worldwide Mobile Phone Sales Declined 8.6 Per Cent and Smartphones Grew 12.7 Per Cent in First Quarter of 2009. STAMFORD, Conn. http://www.gartner.com/it/page.jsp?id=985912
Gartner is a static collection and reporting company. The report of increased usage and purchasing of the iPhone supports the choice of platform for my socially relevant project.
[GRAN97] Granger, M. J., Adams, E. S., Björkman, C., Gotterbarn, D., Juettner, D. D., Martin, C. D., and Young, F. H. 1997. Using information technology to integrate social and ethical issues into the computer science and information systems curriculum: report of the ITiCSE '97 working group on social and ethical issues in computing curricula. SIGCUE Outlook 25, 4 (Oct. 1997), 38-47. DOI= http://doi.acm.org/10.1145/274382.274384
This paper examines thoroughly the inclusion of ethical and social issues in the CS curriculum. It provides suggestions and models of how and where and the issues can be integrated into courses. This paper demonstrates the attempt to organize and categorize social and ethical issues as they apply to CS.
[LAYM07] Layman, L., Williams, L., and Slaten, K. 2007. Note to self: make assignments meaningful. In Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education (Covington, Kentucky, USA, March 07 - 11, 2007). SIGCSE '07. ACM, New York, NY, 459-463. DOI= http://doi.acm.org/10.1145/1227310.1227466
This paper provides a thorough analysis of the social and relevant content in CS course material. It identifies and supports the idea that CS course material is not socially relevant and overwhelmingly has no practical so socially relevant context. The findings supported my thesis.
[MART97] Martin, C. D. 1997. The case for integrating ethical and social impact into the computer science curriculum. In the Supplemental Proceedings of the Conference on integrating Technology into Computer Science Education: Working Group Reports and Supplemental Proceedings (Uppsala, Sweden, June 01 - 05, 1997). ITiCSEWGR '97. ACM, New York, NY, 114-120. DOI= http://doi.acm.org/10.1145/266057.266131
This paper provides an overview of the state of integrating social and ethical aspects into CS. It documents the approaches and presents a framework to including social and ethical responsibility in CS courses. It also discusses other areas that social and ethical issues should be considered that are part of or a by-product of CS.
[NIEL72] Nielsen, N. R. 1972. Social responsibility and computer education. In Proceedings of the Second SIGCSE Technical Symposium on Education in Computer Science (March 01 - 01, 1972). R. M. Aiken, Ed. SIGCSE '72. ACM, New York, NY, 90-96. DOI= http://doi.acm.org/10.1145/800155.805011
This is an early paper recognizing the need to study and integrate social considerations into CS courses. Recognition and examination of social implications that are a part of CS is the responsibility of CS professionals and teachers. This paper provides early support based purely on the understanding of the impact CS can have on social issues.
[SHNE71] Shneiderman, B. 1971. Computer science education and social relevance. SIGCSE Bull. 3, 1 (Mar. 1971), 21-24. DOI= http://doi.acm.org/10.1145/873674.873677
This paper examines CS as a theoretical discipline asserting the extreme importance of the parallel study of social application and implications. This paper is similar to other early papers in this subject that recognize the social integration in the subject matter before the extensive rise of computers. It supports the thesis of my paper with a strong tone of responsibility to acknowledge and study the social areas of CS.
[TRUL09] Trulia Real Estate Search. 2009. Trulia, Inc. http://www.trulia.com
Trulia is a related work and is a website that supports real estate searching. Trulia created an iPhone application that provides a similar interface as my iPhone application. It was a good source for ideas and helped to improve the design of the Westside Rentals iPhone application.
[WING06] Wing, J. M. 2006. Computational thinking. Commun. ACM 49, 3 (Mar. 2006), 33- 35. DOI= http://doi.acm.org/10.1145/1118178.1118215
This article by Wing discuses the many applicable areas CS and computational thinking has outside the CS curriculum. She suggests computational thinking is a skill that everyone should posses, not just computer scientists. Her argument that CS is applicable throughout the community supports the socialization of CS argued in this paper.
[ZWEB08] Zweben, Stuart. 2008. Computing Degree and Enrollment Trends from the 2007- 2008 CRA Taulbee Survey. Computing Research Association (Washington, DC).
This is a report of the results of a survey of undergraduate enrollments in CS courses. It shows the downward trend in enrollment numbers in CS from the beginning of this decade (2000-2010). It also shows the very first signs of recovery in enrollment numbers occurring in just the last year.