=Paper= {{Paper |id=Vol-2403/paper10 |storemode=property |title=Innovative Approaches in C Introductory Programming Courses |pdfUrl=https://ceur-ws.org/Vol-2403/paper10.pdf |volume=Vol-2403 |authors=Matej Madeja,Jaroslav Porubän |dblpUrl=https://dblp.org/rec/conf/icteri/MadejaP19 }} ==Innovative Approaches in C Introductory Programming Courses== https://ceur-ws.org/Vol-2403/paper10.pdf
         Innovative Approaches in C Introductory
                  Programming Courses

            Matej Madeja1[0000−0002−8197−1962] and Jaroslav Porubän2

    Department of Computers and Informatics, Faculty of Electrical Engineering and
      Informatics, Technical University of Košice, Letná 9, 042 00 Košice, Slovakia
                 matej.madeja@tuke.sk1 , jaroslav.poruban@tuke.sk2



        Abstract. The choice of programming language in an introductory pro-
        gramming course (CS0) is crucial for understanding of basic program-
        ming principles. From our previous research, C programming language
        seems to be the most appropriate for these courses. In this paper we pro-
        pose 8 problem sets (PS), the one of whom focused on Arduino boards,
        and we implement them to the curriculum of an CS0 course in C which
        is yearly attended by 500 students. We have collected PS results from
        four semesters of the course and we observed the impact of PS quantity
        on students’ motivation and overall results. From our observation stu-
        dents mostly start to work since the last two weeks before the deadline,
        regardless of the solution evaluation length. A surprising result was the
        fact that with a higher number of PSs in a semester the average rate of
        submissions and final results was lowered. At the same time, we confirm
        the positive impact of game programming in CS0 courses that motivate
        students to work from the early beginning of testing and it is 27% earlier
        than in the case of classical PSs.

        Keywords: computer science courses · CS0 · programming · C language
        · problem set · innovative approaches.


1     Introduction

Computer science and software engineering have become very popular at univer-
sities around the world due to the constant lack of IT engineers in the market.
Universities respond to this by expanding demanded study fields, and thanks
to that massive open online courses (MOOC) has grown considerably [1]. This
boom causes IT departments can be attended by students who are not moti-
vated enough to study such discipline and it is the role of universities to make
their courses more attractive. Introductory programming courses, often labeled
as CS0 or CS1, have an important role in motivating students for future work
in software engineering.
    Universities exploit mentioned situation and try to attract students to less
popular study fields through IT departments, so they often accept all students
without admission procedure. In this case, it is necessary to classify the most
prospective students for considered study field. If the course is attended by a
student who has earlier programming experience, he often underestimate the
role of CS0 courses relying on his previous experience. This student brings his
own writing code habits and thinking, which, according to our experience with
teaching, are often negative for such students. Many authors in their papers [2,3]
confirm that the programming style that students learn as first influences their
thinking and creation of the code for a long time. The aim of these courses is
therefore to broke bad and learn the engineered correct approaches for program
architecture and code habits, such as naming conventions, algorithmization and
creation of comprehensible source code.
    As we can see, the task of introductory courses is very crucial for the future
development of the student. According to Allain [4], author of a book of the C
family, there are 5 rules leading to the correct learning of the basics of program-
ming: 1. study enough examples, 2. run code and test real examples, 3. write
own source code as often as possible, 4. use a debugger and 5. constantly look
for new sources for study. Given the above recommendations, we would like to
modify the current CS0 course in C language at our university, suggest changes
in curriculum through problem sets (PS) and continuously monitor students’
performance and results in other programming courses during their studies. At
the same time, we try to motivate students to work continuously during the
course. Our main hypothesis for this research is:

Hypothesis 1: A large number of difficult assignments in introductory pro-
gramming courses have a positive impact on student results at other university
programming courses.

    In this paper we provide some partial results for the future hypothesis verifica-
tion we formulated. Since we need basic information about students’ motivation
in CS0 course to compare with other courses at the university, we formulate the
following research questions focused on the CS0 course Programming:

RQ1: Do students work more continuously if they have more time to develop a
  solution for particular problem set?
RQ2: Does the assignment quantity affect the number of student submissions
  rate and final results?
RQ3: Are students more motivated when programming games or motivation is
  similar to classical problem sets?

    The following sections we describe current recommendations and research in
this area as well as the design and partial results of the performed experiment.


2   Related Work

For a research in university courses, one must first look at the pedagogical point
of view, therefore in what form and in what structure information should be pro-
vided to the student. That is the reason we divided this section into pedagogical
methods and experiments in university courses.
2.1   Pedagogical Methods
Pecinovský in his book OOP - Learn Object Oriented Thinking & Program-
ming [5] and in his article [6] defines the Architecture First methodology, in
which he advises to teach by the top-down approach, from the overall program
architecture to code details. His method is based on the Berin’s Early Bird ap-
proach [7]. Pecinovský, in his teaching programming research, also recommends
to start programming real programs as soon as possible, making PS attractive
as possible, example using games. In our approach, we build curriculum on the
foundations of Pecinovský with respect of Bergin, trying to guide students from
general programming issues to a detailed understanding of programming princi-
ples using real applications or rather problem sets.
    Pair programming is a technique where two students collaborate on the same
project. In [8] authors confirm the positive impact of this approach on retention,
confidence and program quality. Despite the positives, we consider this approach
to be inadequate for CS0 courses because this way not all students will meet the
same issues.

2.2   Experiments
Hickey [9] has implemented a multi-year experiment in which he obsereved the
use of schema-based web programming in a CS0 course. However, in his approach
combines teaching in a specific language and a broad overview of computer
science, which includes general topics such as hardware, software and history.
This paper also summarizes multi-year students’ results, but we focus directly
on programming in the particular language (C) and exclusively for students of
computer science or software engineering, thus our results are directly pointed
on students of informatics
    Use of Games First approach was addressed by Leutenegger and Edging-
ton [10], who show the positive impact of games on motivating students in intro-
ductory courses. At the same time, the author appreciates the degree of under-
standing of the basic concepts by students. Their approach was an inspiration
for our designing new PS and curriculum design. Like many other experiments,
this also focuses on relationships between gender and success in the course. On
the contrary, we look at student results over several years, regardless of gender,
and examine whether the type of assignment or particular task affects student
motivation and result.
    Alvado et. al. [11] examined the relationship between student experience and
their success in the pair programming course. They found that past experience
mostly affects the rate of success positively, to a greater extent in men than in
women.
    Matzko and Davis [3] used an approach of learning course concepts using
real-world image processing problems in C. Their results of the questionnaire
claim that this approach was excellent for students. From our experience, the
student’s subjective opinion on the course (colleced by the questionnaire) often
does not correspond to his or her real benefit to the student, on the other hand,
we think their results represent student motivation in the course.
3     Original course status

In 2014, focusing on the problem sets, we noticed the obsolescence of a CS0
course at our university. Starting in 2013, we started using automated tests to
evaluate assignments in the course. Despite our attempt to motivate students
to better and more successful results by having multiple evaluations of their
assignment, we have observed the same problem as during the manual evaluation
- students submitted their solutions at the last minute. At the same time, only
2 assignments were included in the course, so the course offered students more
theoretical and less practical experience.
    Another problem was the poor connection between the lecture, the labs and
the problem sets. The students had often necessary knowledge to complete the
assignment since the last week before the deadline, so they were unable to work
continuously. At the same time, the disadvantage was that the labs were mainly
used to consult the students’ solutions, therefore, the labs potential was not
sufficiently exploited.


4     Designing a New Course Organisation

Based on the problems of the original course curriculum and according to the
recommendations mentioned in section 2, we decided to change the CS0 curricu-
lum at our university in 2015. During making big changes in the course we also
considered the suitability of C language for CS0 courses.


4.1    Programming Language Selection

Although the Programming course was taught in the C language from the begin-
ning of its existance, we registered the increased interest of other universities in
other languages, so we were also thinking about changing the programming lan-
guage. We therefore conducted an analysis [12] in which we compared world and
local universities so that we could compare the suitability of each language. At
the same time, we have studied the impact of the choice of language on problem
sets of the course and how it can influence the understanding of basic contexts
in programming.
    We found out that 70% of 37 top universities in the USA use Python in CS0
courses. This has gradually changed over the last decade and we consider it as
a result of simpler understanding. With increasing popularity of object-oriented
programming (OOP), student’s comprehension is higher thanks to simpler real-
world objects mapping to the source code. We can say that increasing abstraction
simplifies program comprehension. The choice of language for universities is likely
affected by trying to provide programming in a language that is very popular
and perspective for the student’s future.
    On the other hand, we see a big gap in understanding how low-level programs
work. The low-level language, such as C, which is the 2nd most popular in CS0
courses, includes topics such as structures, pointers, static and dynamic memory,
stack overflow, etc., which have a very positive impact on the understanding of
programming contexts. Based on our previous analysis in [12] and the mentioned
benefits, we consider C to be very suitable for CS0 courses for software engineers.

4.2    Proposal of problem sets
Inspired by different universities in the world or interesting programming com-
petitions (e.g., ACM ICPC1 )), we have decided to split the problem sets into 2
categories: games and classical problems to solve. We wanted to evenly spread
problem sets in the course for these two categories in order to observe the impact
of the type of assignment and its number in the course on the submission rate
and the final score of the student.
    The goal of the new PSs is a better distribution in the course, so that students
are motivated to work continuously during the semester. The design of several
smaller tasks within the semester indirectly influenced the final curriculum of
the course, so each problem set could be adapted to the lecture content. We also
designed moderated scenarios for the labs to improve students’s cooperation with
the teacher by solving an issue together.
    For the 4 semesters of the course in the period 2015-2018t following PSs were
proposed:
K An 2048 game alternative. We use the character version of the game so stu-
   dents can not use existing solutions. The student must create the whole
   game, including screen rendering and hall of fame. Goal: arrays, structures,
   game loop.
Top Secret Classical ciphers assignment. The task is to encrypt or decrypt a
   string using a defined sequence of simple ciphers, such as playfair and our
   own ciphers (using bit masks, chain variations). Goal: arrays, strings, bit
   operations, pointers.
Adventure A text adventure game or interactive fiction game. The task of
   the student is to create the whole game, i.e. rooms, items, player and other
   extentions. Goal: bigger project maintenance, unions, dynamic memory, bit
   masks, regular expressions.
Tiktak & Triangulation Tiktak is a simple game (not considered as game
   in this experiment) with listing of numbers count requested by the user. If
   the actual printed number is divisible by 3 is typed "tik", if by 2 "tak",
   if both "tik tak". In triangulation the student has to calculate the correct
   coordinates of the enemy ship against the cannon on the land. Goal: working
   with expressions, using standard libraries.
Tesco Simulation of a store self-service cash register. The student has to deal
   with the emerging inaccuracies of type double, for example when issuing
   coins. Goal: representation of numbers, return values.
Hangman A game of guessing a random word by player. If the word is not
   guessed into a defined number of attempts the game ends. Goal: lists, arrays,
   game loop.
1
    https://icpc.baylor.edu/
Problems to Solve It contains 4 complex algorithmic tasks. Goal: algorith-
   mization, stdin, stdout.
    For all PSs also test suites have been created to evaluate students’ solutions.
In 2017 and 2018, we used Arduino board as one of the assignments, where stu-
dent had to implement the game Mastermind. In this way, students are in touch
with the electronics programming, which can increase their motivation for pro-
gramming Internet of Thinks (IoT) in the future. The results of PS Mastermind
are not included in this paper, as we focus exclusively on the results from the
automated tests. The full text definitions of all PSs can be found at the official
course website2 in slovak.

5     Method
With the implementation of new problem sets from section 4.2 into the course,
a testing environment called Arena has been developed. This environment au-
tomatically downloads student solutions from the Gitlab version control system
(VCS) and tests them according to the defined structure. To assess the impact
of the type of assignment and the number of assignments within the semester on
the students’ motivation and results, we use the biggest course at our university
(approximately 500 students/semester), so it provides a diverse sample for us.
    From 2015 we have 4 semester results of total 2090 students. For each year, we
selected different PSs combination and always with similar game/classic problem
set ratio. At the same time, we have distributed different types of PSs during
semester evenly so the results tracking at the beginning/end of the semester has
no negative effect on the results of particular PS type. As usual, at the end of
the semester students are working on assignments from different courses at once,
so if all the PS games are at the end of the semester, it could negatively affect
the results.
    We have always adapted the number of assignments to the speed and focus of
lectures. This way we tried to preserve following presentation of the curriculum:
1. lecture, 2. labs, 3. problem set. We also tried to sort PSs in a way to create
better interconnections of new knowledge. Use of proposed PSs in individual
years and their order during the semester can be seen in the table 1.
    As can be seen, some PSs were used only in 2015. These assignments were
less complex, so they were moved to another course and in later years we used
more complex tasks.

6     Partial Results
In total, we collected 64,825 submissions of students. For PS, which was repeated
in different years, there was also a different testing period for the solution. Stu-
dents could submit the solution for evaluation at any time, but the tests were
run every 3 hours and only if the student made a change to the solution. General
statistics of all years are shown in Table 2.
2
    https://kurzy.kpi.fei.tuke.sk/pvjc/
            Table 1. Problem set order and use in previous course years.

                                                  Order of PS in year
            Problem Set              Type
                                               2015 2016 2017 2018
            K                         game       4     1      1      1
            Top Secret               classic     5     2      2      2
            Adventure                 game             3             4
            Tiktak & Triangulation   classic     1
            Tesco                    classic     2
            Hangman                   game       3
            Problems to Solve        classic                         3

Table 2. General stats about course and problem sets assessment in particular years.

         Number Avg. score ATiD*to reach max. ATiD*of assignment
Year
        of students (100 = full) score before deadline submission posibility
 2015        543       56.80              8.24                 18.40
 2016        325       63.56              9.02                 18.67
 2017        637       60.65              4.61                 9.50
 2018        585       51.62              4.91                 12.50
 *
     ATiD = Avg. time in days;


    To answer the RQ1 we have tracked the submission rate of solutions over
time. In the image 1 we can see that even with a larger time for submission
students start working since the last 2 weeks before the deadline and rarely
students have used the possibility of an earlier submission. An interesting finding
is that the highest peak of submissions is 1 day before deadline, while in general
the last week is the most productive for students, both of submission rate and
the increase of final score.

     Result 1: Student’s ongoing work is not affected by the amount of
  time to submit the solution, students work mostly last 2 weeks before the
  deadline.

    To compare the submission rate and results (RQ2) in different years we
calculated for each problem set the average submission rate per year/PS/student
(figure 2). As we can see, the submission rate in years with a higher number of
PSs is lowered, but this result is ambiguous. When analyzing the submissions of
particular PSs individually, we found the negative impact of using the PSs from
the previous semesters of the course on these results. Despite the changes to
the definition of the assignment, the number of submissions has been reduced in
most cases for unchanged tasks, probably due to the plagiarism of solutions from
previous years. When observing the tasks used for the first time the students
worked more actively, because the student was not influenced by the correct
solution (from the previous year’s course). With a higher number of PS in the
semester the average submission rate decreases and the overall results in score
Fig. 1. Average number of submissions per PS for a particular day before deadline in
the last 4 runs of the course.


are worse. However, the worse results do not represent the student’s learning
experience, because with a greater number of issues the student meets, it can
help him understand the context better.




Fig. 2. Comparison of the average submission rate per year, problem set and student.




     Result 2: The more problem sets a student has to develop in the course,
  the average submission rate is lowered and the final score is worsened.


    A good indicator of ongoing work of students we consider the number of
submission per day. If the student is sufficiently motivated it is assumed that he
or her works on the solution earlier. We found out that students are more active
when programming games (RQ3) rather than programming classical PSs (see
figure 3). When we analyzed the results of individual PSs, games were the fastest
growing in the beginning of the chart, indicating an increased student motivation.
Subsequently, the relatively similar number (± 500 submissions/day) of attempts
to evaluate the assignment was counted. When observing the graphs of individual
classical PS we saw a gradual increase in interest and the peak was reached just
before the deadline, which means low student motivation. The average score on
game programming was on average 3.19% higher over the overall evaluation of
the award, but we consider this difference as not significant.




Fig. 3. Comparison of submission frequency by days to deadline for game vs. classical
problem sets.




       Result 3: Students are more motivated developing games and they work
    from the beginning of the PS publication. While programming a classical
    PS is the motivation initially lower, reaching a similar level in 27% later of
    total evaluation time.


7     Conclusion and Future Work
Introductory programming courses play an important role in the way of how
students think and develop the source code, both from a pedagogical point of
view and previous empirical studies. The actual impact on students for follow-
ing programming courses after CS0 has not been quantified in such way. In this
paper, we answer partial questions about students’ motivation and continuously
work in the introductory programming courses, with 4-year observation of stu-
dents in the biggest course at our university. From our observation, students
start to work since the last 2 weeks before the deadline, regardless of the length
of the solution evaluation. For authors, the surprising result was the fact that
with a higher number of PSs in the semester the average rate of submissions
and final results was lower. At the same time, we confirm the positive impact
of game programming in CS0 courses that motivate students to work from the
early beginning of testing and it is 27% earlier than in the case of classical PSs.
    In our future work, we would like to include additional assignments in the
course in order to achieve more relevant results, as we noticed the negative
impact of PS reusing. We also would like to take into account the results of
the Arduino PS and evaluate the impact of CS0 courses on the results in other
programming courses. Thanks to students’ solutions availability at VCS, we can
take a closer look at programming styles and habits, to improve students’ source
code comprehension.


Acknowledgment

The authors would like to thank all the participants in the research, especially
students and teachers of course Programming of Technical university of Košice.
This work was supported by project KEGA No. 053TUKE-4/2019: Learning
Software Engineering via Continues Challenges and Competitions.


References
 1. Cook, M.:         The 50 most popular moocs of all time (04 2015)
    http://www.onlinecoursereport.com/the-50-most-popular-moocs-of-all-time/.
 2. Robins, A., Rountree, J., Rountree, N.: Learning and teaching programming: A
    review and discussion. Computer science education 13(2) (2003) 137–172
 3. Liberman, N., Beeri, C., Ben-David Kolikant, Y.: Difficulties in learning inheritance
    and polymorphism. ACM Transactions on Computing Education (TOCE) 11(1)
    (2011) 4
 4. Allain, A.:         5 ways you can learn programming faster (2011)
    https://www.cprogramming.com/how_to_learn_to_program.html.
 5. Pecinovský, R.: OOP - Learn Object Oriented Thinking & Programming. Aca-
    demic series. Tomas Bruckner (2013)
 6. Pecinovský, R.: Methodology architecture first. 5 (04 2013) 107–114
 7. Bergin, J.: Fourteen pedagogical patterns. In: EuroPLoP, Citeseer (2000) 1–49
 8. McDowell, C., Werner, L., Bullock, H.E., Fernald, J.: Pair programming improves
    student retention, confidence, and program quality. Commun. ACM 49(8) (August
    2006) 90–95
 9. Hickey, T.J.: Scheme-based web programming as a basis for a cs0 curriculum.
    SIGCSE Bull. 36(1) (March 2004) 353–357
10. Leutenegger, S., Edgington, J.: A games first approach to teaching introductory
    programming. In: Proceedings of the 38th SIGCSE Technical Symposium on Com-
    puter Science Education. SIGCSE ’07, New York, NY, USA, ACM (2007) 115–118
11. Alvarado, C., Lee, C.B., Gillespie, G.: New cs1 pedagogies and curriculum, the
    same success factors? In: Proceedings of the 45th ACM Technical Symposium
    on Computer Science Education. SIGCSE ’14, New York, NY, USA, ACM (2014)
    379–384
12. Madeja, M.: Innovative approaches in introductory programming courses. Master’s
    thesis, Technical university of Košice (05 2015)