Wednesday, January 16, 2013

Copyscape Results.




Duplicate Checker RRL



                    REVIEW OF RELATED LITERATURE

            Nowadays, the amount of students enrolling computer science is still constantly rising. According to Computing Research Association (CRA), the population of computer science students increased to almost 10% in the 2011 – 2012 academic year. This has been the fourth straight year for the population to rise (Harsha, 2012). And along with this growth, comes the problem of learning introductory programming.

            In this chapter, the researchers discussed about the literature from different sources that are related to this study.

Failure Rates in Introductory Programming
(Bennedsen & Caspersen, 2007)
            Introductory programming is one of the great obstacles an aspiring programmer will have to face. Many have stated, including the researchers themselves that learning introductory programming is one of the hardest subjects offered in computer studies. However, the belief that high failure rates in this subject are not from official statistics but a common folk-wisdom that has been shared so often that they are almost accepted to be truths.

            If a student views the failure and pass rates of introductory programming incorrectly, there will be an upsetting psychological effect that stops the student from trying their best and reasons out that it is just the way a programming subject will be. If this kind of rumor spreads out to aspiring programmers and computer studies enrollees, “it could be one of the factors influencing the declining number of students taking up degree in computer science” Bennedsen and Caspersen stated. Therefore, an accurate statistical research should be made for the students to precisely understand the difficulty of programming.

            The researchers used a short, web-based questionnaire with four terms defined as abort, skip, fail and pass. These questionnaires were given to different universities and colleges, majority of the schools were from United States of America. 575 questionnaires were deployed to specific respondents, 78 of them were undeliverable, giving only a population of 497. Unfortunately, only 80 respondents from different institutions answered the questionnaire and 17 of them were answered incorrectly. This gives the researchers 67 correctly filled out questionnaires which is equivalent to 12.7% of the total questionnaires deployed.



Figure 2.0 Abort, Skip, Fail and Pass rate; Aggregate

 


Figure 2.1 Abort, Skip, Fail and Pass rate; Average

In Figure 2.0, only 67% of the students were able to pass introductory programming. This calculation is based on aggregate numbers, this means that if there are more students in a course, it counts more. In Figure 2.1, giving the courses equal weight, 72% of the students passed the subject.

33% abort, skip or fail the subject based on aggregate numbers and 28% fail based on average values. The question is, is this high? From the remaining passers of the subject, there is still no guarantee that they will graduate with a degree in their hands. Cutting off almost one-third of the students enrolled in computer studies is somewhat alarming to some of us. Introductory programming isn’t impossible to pass, you can think of it as a huge stepping stone for your goal.

A Participative Approach to Teaching Programming
(Jenkins, 1998)
Participative learning approach focuses in making the traditional lecture-based teaching into a fun, modern and conventional way of learning. The primary goal of this approach is to change the students from being passive recipients and convert them into active recipients which will make them more engaging towards their subject.

There are several evidences of participative learning approach showing its effectiveness in higher education. Fleury shows how difficult recursive algorothms can be when first learning it. However, he stated that it can be presented effectively to students using a participative learning approach where the students themselves enact the situation involved. Pennington stated that using participative approach and other similar techniques were “likely to help (the students) remember the material”.

It is generally known that the most effective way of learning programming is through practice. Race listed the four keys to learn programming effectively:
·        Practice
·        By doing it
·        By trial and error
·        By getting it wrong at first and learning from mistakes
These keys are certainly ways of learning programming efficiently. However, one of the problems encountered by students is the fact that they are not getting sufficient knowledge to start these four keys. Participative learning approach plans to get the students to this stage at least.

Traditional lectures are not effective for educators to use when teaching the process of programming to novices (Jenkins & Towle, 1997). Students easily get bored when learning introductory programming the traditional way. Although they are effective in learning with syntax and semantics, the most important for a novice programmer is the process of the program. Knowing this, educators must devise a plan to make the students learn programming effectively.

Participation is difficult. Even if the learning approach is proven effective, it is not easy to make the students participate in the lecture. Students easily get afraid of them being considered stupid, attention seekers and creeps (Gibbs, 1992). Educator’s experiences show that majority of the class cannot understand the material just presented and are afraid of revealing their ignorance. With these problems in mind, the ideal class environment should be:
·        Informal – there should be as few barriers between the educator and students. Informal enough that students can speak comfortably with the educator. This attribute can remove shyness and nervousness of the students which can hinder them in their quest for knowledge. Sometimes the students are just shy towards asking questions especially if the educator is strict and unapproachable. Not too informal that we could fool around our instructors like they are our best friends. We still need to respect the, informal but well respected.
·        Dynamic – the classes would adapt as they progressed and as more was understood about the students’ level of knowledge of a particular topic. Classes would advance depending on the students’ current level of knowledge. This would put them in their own pace. It would make them comfortable and confident rather than feeling alone and left behind when classes are just too much for them.
·        Personal – there would be no “them” and “us” from either point of view. For example, trying hard just to learn every name of the students in a class.
·        Entertaining – make the students want to come to class. Encouraging them to come to class results to lesser absences due to uninteresting way of teaching.
·        Memorable – an attribute in learning that is underestimated often. Classes that are memorable are likely to help the students save the material they learned into their memories. Even if they do not fully understand the lesson, they remember the class itself. And hopefully, they would appreciate the relevance of the class to the lesson they had. Lessons are easy to understand when it is delivered surprisingly fun and memorable.
·        Fun – teaching and learning are supposed to be fun. This makes the students more interested in learning rather than the traditional way which is only effective if the students are motivated enough.
With the attributes mentioned, it is clear that participative learning approach is best used for this type of class environment. Learning introductory programming using a participative learning approach is one of the best approaches out there to use. However, this does not mean that the traditional lecture-based is bad. It is not just the right approach to use when teaching introductory programming especially when the students are still fresh from it. There is an exception to this though, that is when the students are highly motivated to learn programming.

Lear: Learning and Problem Solving as an Iterative Process
(Oppermann & Thomas, 2005)
            The current learning challenges for competent employees in information technology is insufficient during the introduction phase of new systems, improved on-line help, and user support by local or central consultants. Nowadays, requirements and qualifications of working people change and evolve. Especially flexible work organizations that often do job rotations, job enrichment and group work. A new learning approach is needed to support learning and qualification process to lessen the difficulties encountered when learning something new.


            The researchers think that this problem does not only occur in work environment but also in learning institutions. This often happen in introductory programming subjects where the students need to pace up with the lessons given by the educator. It is extremely hard to study introductory programming especially if you are fresh from it. Students often proceed to the next lesson without fully understanding material just presented. This problem also occurred to the researchers when they enrolled for introductory programming.

            According to Oppermann and Thomas, there are currently three approaches to the learning challenge.

First are the training courses during the introductory phase of new systems. Pre-training of the job or learning on the job is good since this approach has been for ages. But good doesn’t mean they are perfect, pre-training before actual performance needs to consume time before working. Training courses usually take around a week or more depending on the job. In addition, actual learning and encountering problems occur right on the job and not on these training courses. They might help you get ready for problems but the learning always takes place on actual performance and not on training. Learning on the job can slowly build your pace but prone to errors. A significant error might put your career into danger.
Another approach would be asking support from on-line help. This refers to intelligent help systems. One major flaw of this kind of system is their limited capacity of information. Systems like this can only cater topics that the developer intended to. Users might end up buying a lot of software or you can hire a software engineer to make you one but it is expensive enough to make you research another approach.

The third approach uses local and central consultants. They might be good for tutorial services. Actual learning is best when it is personal. However, like on-line help systems, the capacity of a consultant is still limited. They are still human being that has limitations in what they know. Furthermore, like other human beings, they are busy and might not be available all of the time.

Oppermann and Thomas stated the three aspects of learning that they want to focus on:
·        Learning is universal – it has to be supported in every working situation. Learning is not only present in the beginning; it is present throughout the entire process.
·        Learning is a combination of exploration and instruction. People start to learn by trying something they don’t know.
·        Learning is an iterative phenomenon. It undergoes a cycle trying to learn something out of it.

With this mentioned aspects, they decided to use an iterative learning approach. Iterative learning is a process that executes several trials of acquisitions and the application of the knowledge gathered. Acquiring knowledge in the first trial may be exploratory, supported by consultants, prone to errors, indirect solutions and a dead end. The first step might be challenging but it provides the user a lot of ideas, risks, errors and maybe solutions. The first step might be enough for others to provide solutions but most of the time, it is just a preliminary understanding of the surface of the problem. Iterative approach focuses on the user’s ability to reinforce and extended by re-use in identical or similar situations.

Oppermann and Thomas’ solution to this continuous problem is the LEAR. LEAR stands for Learner’s Living Repository; a support environment for learning and consultation. It focuses on integrating working and learning and on supporting self-directed and group learning. Users of LEAR can describe problems or solutions they encounter, comment on them and store them as “episodes”. Users can then send their episodes and store it in an online database for later use. Users who are interested in specific episodes can be made available to a group of users.

An environment of this kind can help the people who want to learn by asking the users of this system or can access the episodes for the easier way of finding the solutions.

The researchers recognized the usefulness of the iterative learning approach through this article. Iterative learning can be really useful if done correctly. The researchers decided to use this approach to improve the quality of learning of their research.

Learning through comparison
(Saalbach, Schalk, Schneider & Stern)
            Comparison is one of the most effective means for learning for both children and adults. We have been doing comparison for all kinds of things before we even know about it. It is one of the most basic tools to use when learning. It is supposed to work by analyzing the “structural alignment” of two objects, allowing for the discovery of important common and different properties of the object.
            The researchers consider this basic learning method essential for the learning of introductory programming. For the complexity of programming, the researchers thought about using the basic and commonly used learning approach. This type of approach might be very slow but is very productive.

Code Rocket Designer
            Code Rocket Designer is a standalone tool which helps programmers’ lives easier by converting pseudocode to source code, which helps save time to developers without almost having the need to manually code the ideas they have presented as grammatical thoughts or flowcharts. It provides a document generator that can be modified to the likeness of the document creator; the supported formats are Word documents and HTML, to make documentation easy, making it understandable to people who have no idea about the technical aspects of the software. When slight changes to the pseudocode or flowcharts are made, it automatically reflects to the design of the system, this will help the developers save time by preventing them to make changes, for example, on their source code or vice versa. The programming languages currently supported are: C, C++, C#, Java and Visual basic, plugins are also available for Visual Studio and Eclipse with a debugger to trace possible errors. The software can be evaluated for 30 days and after that it has to be purchased for 99.95 euros. Considering the price of the software, users can save a lot of money using the software.
GPC Pseudocode Converter
            GPC Pseudocode Converter is an open-source software that converts pseudocode into C++ source code, the code is ready to compile for run-time execution, developers will only have to run their converted pseudocode after it has been converted, saving a lot of time from having to code it manually, simultaneous conversions is also supported by the software, with lots of project piled up for the developers, it is necessary to finish them as early as possible as to catch deadline and possibly save costs. The program also includes a text editor where you can test your conversions, for inexperienced users, they can use the text editor to try its effectiveness and hone their understanding of an idea and then coding it.  It works on the Debian operating system.

AthTek Code to FlowChart
AthTek converts source code into flowcharts and allows the flowchart diagrams to be exported to Microsoft Visio, Excel, Word and Power Point. The program supports C, C++, Visual C++, and Pascal/Delphi. It is a shareware program and the license costs $99.99.


Instant C#
            Instant C# converts entire VB.NET project into C# programming language code. This time saving program helps developers finish their tasks in time and save resources. This program is a shareware, and it can be evaluated for conversion of up to 2000 lines of code. The program can be purchased for $139.

Visustin V6 Flowchart Generator
            Visustin is a software that converts a source code into its flowchart design. The software reverse engineers the source code written to convert it into flowcharts or UML Activity Diagrams and supports simultaneous conversions. It is also capable of reading conditional and iterative statements. No drawing is required to generate the flowchart from its source code but if necessary, the users can draw flowcharts from scratch to be able to formulate an approach on building certain solutions/programs or edit existing flowcharts for improvement and error tracing measures. Users can also save the flowcharts they have made as image files (MP, GIF, JPEG, PBM, PCX, PGM, PNG, PPM, TGA, TIFF, MHT, EMF and WMF) and allow exporting of diagrams into Microsoft Visio, with the program being able to save a digital image format for created flowcharts, it makes the flowchart more viewable as some programs tend to use their own file format for their project files, the tendency is, few or the said program(s) can only recognize the file formats used by a certain program. The programming languages that Visustin supports are the following : Ada, ASP, assembler, BASIC, C, C++, C#, Clipper, COBOL, ColdFusion, Delphi, Fortran, Java, JavaScript, JCL, JSP, LotusScript, Matlab, Pascal, Perl, PHP, PL/I, PL/SQL, PowerScript, PureBasic, Python, QB, REALbasic, REXX, SAS, TSQL, VB, VBA, VBScript, VB.NET, Visual FoxPro and XSLT.

            Site licensing of this program may cost up to $7790, in which you can install the program to any machines the buyer wants to. There are three (4) editions of this program:  Standard, Pro, Pro Premium and Standard Educational. Single user licenses may cost $499 dollars. The resarchers realized that the price was too much for its functionalities but the support provided for programming languages almost made up for it.

Crystal Reports Formula Editor
            Formula Editor is the tool provided by Crystal Reports to generate statements that create the foundation of a report. This is where the researchers’ project’s software is based. Users will only have to click, for example, a database table’s column or row to be included on the report. The advantage of using this tool over the others is that users do not have to necessarily code the formula for their reports, they can use ‘Report Builds’ to find the necessary conditions needed to use for the output of the generated report, making it easy to understand or use. The disadvantage of this tool is that, the debugger is not user friendly for beginners, if users have limited knowledge, they may have a hard time debugging because the tool does not tell on what line number of the formula has the wrong statement or expression.

Synthesis
With the reviews of related literature presented above, it shows the concept of the learning methods that are going to be used with this research. The reviews gathered here helped in determining the significance of the research.
Crystal Report’s Formula Editor shows that its user interface is practical and user-friendly. The ability to point and click the variables, statements and definitions is pretty convenient and a good thing to have.
There are other pseudocode to C code converters mentioned above but none of them have the concept of making it a learning material instead of being a pure converter.