Course Structure – Java Junior
BRAINS2020 – COURSE OVERVIEW
This page comprises detailed information about the structure, methodology, content, grading and diploma types for the course.
⎯ FUNDAMENTALS OF PROCEDURAL PROGRAMMING USING JAVA (40 classes)
Goal:
The course will introduce basic concepts and methodology of procedural programming based on the Java programming language. It will introduce basic concepts of algorithmic problem solving and techniques for solving problems of simple functionality and is an introduction to more complex forms of programming and problem solving using computers.
Methodology:
The course centers around interactive online lectures organized around the presentation of concepts and abstractions of procedural programming through presentations, examples, question and answer sessions, and exercises, theoretical and practical, conducted both communally and individually. Lecture classes are followed wherever practical with classes focusing on problem-solving exercises, using an active approach to teaching in accordance with the Felder and Silverman teaching styles taxonomy.
Learning outcomes:
Upon completion, the student should be able to:
- Understand the basic concepts of algorithmic problem solving.
- Solves simple problems independently (algorithmically or in Java programming language).
- Independently implements programs of simple functionality (algorithmically or in Java programming language).
- Independently detects errors in simple program code (regardless of who the author of the program code is).
- Understands the syntax of the Java programming language.
Topics:
The course covers ten topics.
Topic 1 (4 class hours).
- Algorithmic way of solving problems and basic steps in program development.
Topic 2 (2 class hours).
- Software development environment.
Topic 3 (6 class hours).
- Variables and testing and debugging of simple programs.
Topic 4 (4 class hours).
- Expressions and Built-in Java objects, subroutines, and functions – String and Enum.
Topic 5 (2 class hours).
- Basic input and output.
Topic 6 (4 class hours).
- Program flow control structures – blocks, loops, and branches.
Topic 7 (4 class hours).
- Static data structures – arrays, matrices, and multidimensional arrays.
Topic 8 (4 class hours).
- Subroutines
Topic 9 (10 class hours).
- Search, updating, replacing, and sorting – algorithms and programming solutions.
⎯ FUNDAMENTALS OF OBJECT-ORIENTED PROGRAMMING USING JAVA (40 classes)
Goal:
The course will introduce basic concepts and methodology of object-oriented programming using the Java programming language. It will introduce basic concepts of object-oriented thinking and program design, as well as methods for developing object-oriented programs of simple to medium complexity.
Methodology:
The course centers around interactive online lectures organized around the presentation of concepts and abstractions of object-oriented programming through presentations, examples, question and answer sessions, and exercises, theoretical and practical, conducted both communally and individually. Lecture classes are followed wherever practical with classes focusing on problem-solving exercises, using an active approach to teaching in accordance with the Felder and Silverman teaching styles taxonomy.
Learning outcomes:
Upon completion, the student should be able to:
- Understand the basic concepts of object-oriented problem solving
- Design simple object-oriented programs independently
- Independently implement object-oriented programs of simple to medium complexity using the Java programming language
- Independently detect errors in simple object-oriented program code (regardless of who the author of the program code is)
- Understand the possibilities of the Java platform and Java Collections Framework
- Understand the concepts of abstract classes, interfaces, APIs and frameworks
- Understand basic design patterns in object-oriented programming
Topics:
The course covers ten topics.
Topic 1 (6 class hours).
- Basic concepts in object-oriented programming, objects and classes
Topic 2 (4 class hours).
- Constructors, access control, and encapsulation
Topic 3 (4 class hours).
- Inheritance
Topic 4 (2 class hours).
- Association, aggregation, and composition
Topic 5 (2 class hours).
- Polymorphism
Topic 6 (4 class hours).
- Abstract classes and interfaces
Topic 7 (4 class hours).
- Frameworks and application programming interfaces (APIs)
Topic 8 (4 class hours).
- Exception handling, streams and files
Topic 9 (6 class hours).
- Java platform and Java Collections Framework
Topic 10 (4 class hours).
- UML, object-oriented program design, design patterns
⎯ INTRODUCTION TO DATABASES (32 classes)
Goal:
The course will introduce the basic concepts in the field of databases and basic techniques of implementation and uses of databases.
Methodology:
The course centers around interactive online lectures organized around the presentation of the fundamentals of modern relational database design, use, and application through presentations, examples, question and answer sessions, and exercises, theoretical and practical, conducted both communally and individually. Lecture classes are followed by, as long as it is practical, with revision, analysis of problems, and exercises.
Learning outcomes:
Upon completion, the student should be able to:
- Understand basic concepts and techniques of database systems.
- Understand the concepts of ER and EER data models and is able to independently solve simple problems using the ER diagram concepts.
- Understand the concepts and limitations of the relational data model.
- Independently implements a relational database using SQL scripts.
- Independently solve low-to-medium complexity tasks using relational database language SQL
- Use SQL language and can query and update a relational database.
- Independently define the physical structure of the database.
Topics:
The course covers ten topics.
Topic 1 (2 class hours).
- Introduction to database system.
Topic 2 (2 class hours).
- Data models.
Topic 3 (4 class hours).
- Data modeling using the Entity Relationship (ER) model.
Topic 4 (4 class hours).
- Data modeling using the Extended Entity Relationship (EER) model.
Topic 5 (2 class hours).
- Relational data model.
Topic 6 (2 class hours).
- SQL–Language of relational databases.
Topic 7 (2 class hours).
- Data Definition Language (DDL) .
Topic 8 (2 class hours).
- Data Manipulation Language (DML).
Topic 9 (8 class hours).
- SQL queries.
Topic 10 (4 class hours).
- Views in SQL.
⎯ SOFTWARE DEVELOPMENT PRINCIPLES AND WEB APPLICATION BACK-END DEVELOPMENT (84 classes)
Goal:
The course will introduce basic concepts and methodology of back-end design and development on a web application example using Java as the main programming language. The course will introduce basic principles and methodologies of software development on a Web application example using Java and JavaScript as the main programming languages. The following technologies and programming languages will be used in the course: Java, Spring framework / Spring Boot, Git and UML.
Methodology:
The course centers around interactive online lectures organized around the presentation of Web application backend programming techniques and current state of the art industry best practices in software development methodologies through presentations, examples, question and answer sessions. Lecture classes are followed wherever practical and as often as possible with practical exercises, exploring methods of solving real-world problems using modern software tools and methodologies.
Learning outcomes:
Upon completion, the student should be able to:
- Understand the principles of good back-end design and applicable design patterns.
- Independently develop low-to-medium complexity back-end components.
- Understand one Java framework for back-end development and competently use the relevant libraries and frameworks to produce modern web-based back-ends.
- Understand the principles of good software development and applicable software development methods.
- Independently develop low-to-medium complexity web applications
- Understand agile software development methodology and competently use the methodology to produce a modern web application.
Topics:
The course covers nine topics.
Topic 1 (4 classes).
- Web architecture and spring boot.
Topic 2 (12 classes).
- REST services layer.
Topic 3 (12 classes).
- Data layer.
Topic 4 (8 classes).
- Service layer.
Topic 5 (12 class hours).
- Serialization and Deserialization of data.
Topic 6 (8 class hours).
- Testing the applications.
Topic 7 (8 class hours).
- Tools for managing software development projects.
Topic 8 (8 class hours).
- Software design and UML.
Topic 9 (12 class hours).
- Security
⎯ WEB FRONT-END (84 classes)
Goal:
The course will introduce basic concepts and methodology of web front-end development based on modern HTML, CSS, JavaScript, and the React framework.
Methodology:
The course centers around an even mixture of practical online work and interactive online lectures, seeking to maintain a 1:1 ratio between practical exercises and interactive lectures presenting the theoretical foundations of front-end design in general and on the web, in particular. Practical exercises are divided between problem-solving practice in which complex problems are solved through communal effort and individual work bolstered by consultations by the teacher.
Learning outcomes:
Upon completion, the student should be able to:
- Understand the large-scale structure of complex web applications.
- Designs web pages optimized for web application use.
- Style the look of a website using responsive design and CSS.
- Code competently in JavaScript and understand its role in the JavaScript ecosystem.
- Exercise command-line control over the NodeJS/npm environment, and know how to leverage it for purposes of web development.
- Develop simple web applications based on the React framework.
Topics:
The course covers seven topics.
Topic 1 (4 classes).
- Web protocols.
Topic 2 (2 classes).
- Development environment.
Topic 3 (2 classes).
- Web development overview.
Topic 4 (16 classes).
- Web app appearance.
Topic 5 (16 class hours).
- Web programming.
Topic 6 (20 class hours).
- React — introduction.
Topic 7 (24 class hours).
- Advanced React.
Literature:
⎯ Fundamentals of Procedural Programming using Java
- David Eck, Introduction to Programming using Java, 7th edition, 2014. Available online at: http://math.hws.edu/javanotes/
- Bruce Eckel, Thinking in Java, 4th edition, Prentice Hall, 2005 – translation in Serbian – “Misliti na Javi”, Mikroknjiga, Beograd.
- Wladston Ferreira, Computer Science Distilled, Code Energy LLC, 2017.
- MOOC: CS 50 Introduction to Computer Science, Harvard University. Available online at: https://www.edx.org/course/cs50s-introduction-to-computer-science
- Teacher’s notes. Available online at: https://www.dropbox.com/s/cfgl8hgrtwxk220/1_OP_kurs.pdf?dl=0
- Teacher’s examples.
⎯ Fundamentals of Object-oriented Programming using Java
- David Eck, Introduction to Programming using Java, 7th edition, 2014. Available online at: http://math.hws.edu/javanotes/
- Bruce Eckel, Thinking in Java, 4th edition, Prentice Hall, 2005 – translation in Serbian – “Misliti na Javi”, Mikroknjiga, Beograd.
- Matt Weisfeld, “Objektno orijentisani način mišljenja”, (in Serbian), CET, Beograd, 2003.
- MOOC: Object Oriented Programming in Java, University of California San Diego. Available online at: https://www.coursera.org/learn/object-oriented-java
- Teacher’s notes. Available online at: https://www.dropbox.com/s/j2fkfrnmy33kip8/2_OOP_kurs.pdf?dl=0
- Teacher’s examples.
⎯ Fundamentals of Databases
- Date C. J, An Introduction to Database Systems, 8th Edition, Addison- Wesley Publishing Company, 2003.
- Elmasri R, Navathe B. S, Database Systems: Models, Languages, Design and Application Programming, 6th Edition, Pearson Global Edition, 2011.
- Ramakrishnan R, Gehrke J, Database Management Systems, 3th Edition, McGraw-Hill, 2003.
- MOOC: Databases: Relational Databases and SQL, Stanford University. Available online at: https://www.edx.org/course/databases-5-sql
- Teacher’s notes. Available online at: https://www.dropbox.com/s/iandvsjgp8j814d/3_BP_kurs.pdf?dl=0
- Teacher’s examples.
- Documentation of DBMS MySQL. Available online at: https://docs.oracle.com/cd/ E17952_01/index.html
⎯ Principles of Software Engineering and Development of Web Application Backends
- Bauer, G. King, and G. Gregory, Java Persistence with Hibernate, 2nd ed. New York, NY, USA: Manning, 2015.
- Gutierrez, Pro Spring Boot, 1st ed. New York, NY, USA: Apress, 2016.
- Walls, Spring in Action, 4th ed. New York, NY, USA: Manning, 2016.
- “Spring Tutorials.” [Online]. Available online at: http://spring.io/guides#tutorials.
- Teacher’s notes. Available online at: https://www.dropbox.com/s/iy723t0d45denry/4_BE_kurs.pdf?dl=0
- Teacher’s examples.
⎯ Development of Graphical User Interfaces of Web Applications
- Shenoy, “Thinking in HTML”
- A. Meyer, E. Weyl, “CSS: The Definitive Guide: Visual Presentation for the Web”
- Crockford, “JavaScript: The Good Parts”
- Flannagan, “JavaScript: The Definitive Guide”
- Materials available online at: https://reactjs.org/docs
- Teacher’s notes. Available online at: https://www.dropbox.com/s/otgy1k1vxfz7999/5_FE_kurs.pdf?dl=0
- Teacher’s examples.
Grading
Performance evaluation and grading of trainees is performed twice during the course:
- After the introductory set of three courses and
- After the two advanced programming courses.
Each trainee receives points in the range from 0 to 100. Total number of points (TNP) for each trainee is computed using the following formula:
TNP = PointsPart1 * 0.4 + PointsPart2 * 0.6
- PointsPart1 is the number of points for the fundamental set of courses, while
- PointsPart2 is the number of points for the advanced courses.
After each of the first introductory courses, participants will work independently on a project. In aggregate, students can earn up to 100 points as PointsPart1:
- Up to 35 for Fundamentals of Programming,
- Up to 35 for Fundamentals of Object-Oriented Programming, and
- Up to 30 for Fundamentals of Databases.
Students have to implement projects at home, but in limited time. After they finish the project, students present their solutions to the trainers. The goal of these projects is to evaluate the knowledge of basic concepts of procedural and object-oriented programming, as well as databases.
After the two advanced courses are completed, participants work independently on two projects for which they can earn up to 100 points as PointsPart2:
- Up to 50 points in project from the server-side programming, and
- Up to 50 points in the front-end programming.
Students have to implement the projects at home, but in limited time. After they finish the project students will have to present their solutions to the teachers. The project requires the development of a web platform using the knowledge obtained throughout the whole set of attained courses.
Total number of points (TNP) computed by the formula above represents a direct quantitative indicator of knowledge obtained by participants. Based on their TNP, several levels of recommendation letters exist which will be fully personalized for each of the trainees.
At the end of each course, students will have at least one week for the introductory courses, and at least two weeks for the advanced courses, to prepare. Focus of grading is on testing the adopted knowledge and skill in practice, and checking what trainees can create using the tools and knowledge obtained in the course, as well as on getting a sense of how much of the material trainees understand through presentation of their work.
Diploma types
- “Completed the course, with teachers’ commendations”: At least 90 TNP achieved
- “Completed the course with flying colors”: 60 to 89 TNP achieved
- “Completed the course”: Attendance of at least 80% of all classes, and less than 60 TNP achieved
- No diploma: Attendance of less than 80% of all classes, and less than 60 TNP achieved
Leave a Reply