INTRODUCTION TO PROGRAMMING: PORTRAIT OF HIGHER EDUCATION IN COMPUTER SCIENCE IN PORTUGAL

The first contact with computational thinking and programming languages of students entering higher education in computer science courses is extremely important for the professional future of these students: if successful it may indicate a promising career; otherwise it often leads to early abandonment of these students. The creation and maintenance of courses (1st cycle and 1st plus 2nd cycle integration) in information technology worries directors, coordinators and teachers of these courses. The area is in constant development and, despite the need for highly specialized technicians and almost zero unemployment, that it does not attract as much students who finish high school as it could. We found 193 courses in computer science in Portuguese higher education. Of these we have 106 1st Cycles, 15 Integrated and 1 Preparation; 66 different institutions. We study these courses: type of education (public or private), denomination of courses and types (1st cycle, integrated master's degree or preparation). 59 are public education courses: those in private education do not have much information on the internet. Of these 59 courses only 46 have information available online. This article belongs to an investigation that is done around the university courses of computer science: a picture of what exists, which are the vacancies, averages, success rates, how computer science and programming are linked in curricular terms, or in terms of curricular units and in terms of programming languages. This article focuses on the initial year and initial curricular units of programming of ten Portuguese computer courses that were considered more significant: programming languages, objectives, bibliography and type of evaluation. It is very important to study what is being done and how it is done.


INTRODUCTION
The creation and maintenance of courses (1st cycle and 1st and 2nd cycle integration) in computer science is a matter of concern for those who are responsible for departments, areas and courses, as well as teachers.The area is in constant development and despite the need for very specialized technicians and almost zero unemployment, it seems that it is not in the minds of most students who finish high school.This article belongs to an investigation that intends to portray higher education in the field of computer science.In an earlier article we described how secondary education works in Portugal, as well as the entrance in Portuguese higher education.It was verified which courses have the most demand as well as those that do not constantly fill all the vacancies.The choice was made from the Technologies area: 193 courses.From these courses we extracted those who had in their name comput * and informát * and another eight courses that seemed relevant to us like Management and Information Systems or Information Technologies.
We then had 122 existing courses, 106 1st cycle courses, 15 Integrated Masters courses (1st and 2nd cycle) and one preparation course.In all, there are 66 different institutions.We highlight the institutions of higher education (public or private), denomination of courses and type (1st cycle, integrated masters or preparation).We find that private universities give little information: so we exclude courses from private universities because they do not have much information on their sites.We only had 59 courses that filled all the vacancies.Of these 59 courses, only 46 have course information available online.[1]

PROGRAMMING LANGUAGES USED AND NUMBER OF CURRICULAR UNITS (46 COURSES)
We verified by the curricular unit (CUs) records of these 46 chosen courses that there are several different perspectives regarding programming languages.In the following table, we can see how many courses use each of the programming languages listed.In the previous table, we can verify that C is the most used programming language at first semester/year in the 46 studied courses.
In relation to the number of curricular units of computer science / programming, it is verified that most of the courses present two CUs in the first year.

CHARACTERIZATION OF THE TEN SELECTED COURSES
For the present article, we extracted ten, the top 10.The choice of this one and not of other courses caused by having a greater number of places than the other courses, as well as the entrance grades being higher.The three courses are 2nd cycle; the other seven courses are undergraduate degrees, ie first cycle.Of these ten courses, we can verify that there was no vacancy in the placements and that the averages of the last position of the first phase were between 12.98 and 17.8 (Direcção geral do ensino superior, 2018).It is verified that the most used languages are C ( 8) and java (7); one of the curricular units analysed uses Haskell and four others use Python.We also can see that java+java and Phyton+C are the most used sequence of programming languages in the two semesters of the first year.

OBJECTIVES, EVALUATION METHODS AND BIBLIOGRAPHY
From the previous point, we find that there are two different paths: the same programming language in the first two semesters or initially introducing a programming language like Python or Haskell and in the second semester to be based on C or java.This article does not make value judgments: we only intend to portray the curricular units of the first academic year.
The objectives are almost always based on the languages: build programs in Java or develop algorithms to implement in C. In the first semester units the objective is to use arrays, sorting, merge, strings, but also (in a few cases) stacks, queues and linked lists.Only one course uses flowcharts and another talks in entity-relationship diagrams.In the second semester units, the objectives focus on the concepts of object-oriented programming and recursion, but some still continue with arrays, queues, trees, stacks, and lists / pointers.
In the second semester units, the objectives focus on the concepts of object-oriented programming and recursion, but some still continue with arrays, queues, trees, stacks, and lists / pointers.
The evaluation is almost always taking into account several items: practical part, theoretical part, evaluation of classes and project (sometimes individual and others in group).Only one of the twenty units has a formula that weighs 50% each of two written test scores.
We have verified that the bibliography of the curricular units is very focused on the chosen programming language: the books that are indicated are java, C (and C ++), Haskell and Python books, As we can see in the following exhaustive list:

Table 2
. Number of curricular units of computer science / programming in the first year; 46 courses.

Table 3 .
The 10 courses chosen for this study(name, cycle, institution and city).

Table 5 .
Curricular unit name: first and second semestre, ects number and programming language(s).

Table 6 .
Programming language 1 st and 2 nd semestre ten courses, twenty units.

Table 7 .
Sequence of programming languages in the two semesters of the first year.