We expect you to have knowledge (at least some level) of the following basic topics, which should be part of a computer scientist's background. Fundamentals of mathematics Basic knowledge of calculus, linear algebra, statistics and probability, and logic. Software development Experience in designing and implementing (coding, debugging, and fixing) small programs in C language and at least one of the following programming languages: C++, C#, Java, Python. Database fundamentals Basic knowledge of entity-relationship data model and relational data model. Experience in database design, data definition, data manipulation, and SQL queries. Fundamentals of algorithms and data structures Basic knowledge of major data structures (arrays, queues, lists, trees, graphs, hash tables) and their operations. Fundamentals of computer architectures Basic knowledge of the main functionality, organization and implementation of computer systems. Fundamentals of operating systems and network protocols Basic knowledge of major operating system components and network protocols (e.g., TCP/IP, stacks). Experience using the shell to navigate a file system and perform basic file and directory operations. Fundamentals of web programming technologies Basic knowledge of website structure, web applications and hosting, HTTP protocol. Experience in client-side web programming with HTML, CSS and Javascript. At the beginning of the pre-acceptance process we will check your basic knowledge and lack of preparation on the listed topics will result in immediate rejection. To successfully pursue your studies in Genoa, you will need more in-depth knowledge on these topics and others, specific to the curriculum. We will help you acquire them, if necessary, through dedicated activities.