Program of the course "Programming in Java"

Course name:Java Programming. Sign up

The proposed advanced course of study allows students to master a deep study of the programming language and gain practical skills in creating programs in this language. enterprise applications interacting with databases.

During the training period, special attention is paid to an overview of advanced Java technologies (Java Beans, RMI, CORBA). In the future, this will allow independently working with databases, maintaining and supporting the WEB site, developing, implementing and maintaining corporate Internet projects, and coordinating technological processes. The teaching methods of the program are based on the active involvement of students in studying proccess using quality teaching materials.

The course program is taught by highly qualified teachers and specialists with great experience practical work. Classes are held in a relaxed creative atmosphere at a convenient time for applicants. Upon completion of training, graduates of the Training Center receive a state-recognized certificate issued by the Moscow Committee of Education and the Government of Moscow and can successfully find employment on applications from employers received by the employment department at training center to departments information technologies large companies and holdings, in financial, consulting, trading and manufacturing companies and firms, as well as banking structures in the specialties "project manager of the development group", "inspector of the computer group", "specialist in computer technology", "specialist in maintaining databases" , "project leader of the development team."

Having mastered the course of this program, you will be able to improve your knowledge by studying the next most difficult program "Programming in C" and get the profession of a "programmer" who can work in various areas computer technologies and develop application-applications. The profession of "programmer" is in great demand in the labor market.

Class schedule:

*** For corporate clients, the schedule of classes is discussed and compiled individually.

Group course times:

  • morning - from 9-00 to 12-00, from 10-00 to 13-00
  • daytime - from 12-00 to 15-00, from 13-00 to 16-00, from 15-00 to 18-00
  • evening - from 18-00 to 21-00, 19-00 to 22-00
  • weekend groups: Saturday and / or Sunday - from 10-00 to 13-00, from 13-00 to 15-00, from 15-00 to 18-00.
*** In some (exceptional) cases, the time of classes can be changed.

Upcoming course start dates:

Working day:
  • Morning - 04-12-2017
  • Day - 05-12-2017
  • Evening - 05-12-2017
Weekend:
  • Saturday and/or Sunday - 09-12-2017

*** Attention! Class start dates are subject to change.

Location of classes:

  • in classrooms in Moscow (metro station Serpukhovskaya, metro station Dobryninskaya, metro station Taganskaya, metro station Arbatskaya, metro station Kitay-gorod, metro station Sukharevskaya, metro station Park Kultury, and Prospekt Mira, etc.);
  • In your city;
  • at your company office.

Curriculum of the course:

1. Fundamentals of Java programming

1.1 Features of the Java language and its purpose

1.2 Structure of the Java 2 SDK

1.3 Simple data types. Cast

1.4 Branch statements and loops

1.5 Functions. Function overloading


2. Java language syntax

2.1 Principles of object-oriented programming

2.2 Classes. Encapsulation. Special class methods

2.3 Inheritance. Access types. Static fields and methods

2.4 Polymorphism

2.5 Interface classes

2.6 Exceptions

2.7 Threads in Java

2.8 Documenting a Java program

2.9 Development of the package. Standard packages from the Java 2 SDK

2.10 File I/O. IO package


3. Graphical user interfaces

3.1 Creating a GUI with AWT Package Classes

3.2 Layouts

3.3 Event Handling

3.4 Creating a GUI using the classes of the JFC Swing package

3.5 Working with sound


4. Applets

4.1 About applets

4.2 Applet structure

4.3 Creating an applet


5. Servlets. Java Server Pages (JSP) technology

5.1 Package SERVLET. Setting up the Apache web server to work with servlets. Creating a servlet

5.2 JSP technology


6. Networking

6.1.NET package

6.2 Creating a program using client-server interaction


7. Access to databases

7.1 Basic information about databases. Creating an Access database

7.2 SQL package. DBMS JDBC


8. JavaBeans technology. An Overview of Advanced Java Language Technologies

8.1 Fundamentals of JavaBeans technology. Creating a JavaBean

8.2 Overview of RMI and CORBA technologies


Test (interview)

How to enroll in courses:

In order to become our listener, you need to go to Training Division of our Center, conclude a contract for training and pay the cost of the course, taking into account the discount that is provided to all visitors who have received information on this site. Under the terms of the contract, the applicant can make an advance payment (50% of the cost of training). The second part of the payment is due before the second lesson.

Sign up In some cities, there may be slight differences from the basic course programs. The number of hours can also be changed. Per additional information contact your city office.

Step-by-step video instruction on job search

How to get a job as a programmer?

Duration

A career in programming is an exciting journey into the world modern technologies. Every developer has their own story and experience. However, there is a basic algorithm that will help you take the first steps correctly and lead to your goal. We have prepared 13 video tutorials in which we answered the most pressing questions about the career of a programmer in companies and in the freelance market. Do you often think about employment and feel that you are ready to start earning? Then this video course is for you.

You will learn

  • Understand the features of various professions in the field of programming;
  • Create resume and portfolio;
  • Search for a job and respond to employers' responses;
  • Attract the attention of the employer and pass interviews;
  • Behave properly at interviews and during the probationary period;
  • Create accounts on freelance exchanges;
  • Interact with customers and build a competent workflow.

Course program

Lesson 1

Features of the profession; frequently asked Questions; demand in the labor market.

Lesson 2

Will I become a successful programmer? success factors.

Lesson 3

The most important thing is the first impression; how to name the job.

Lesson 4

Review of languages ​​for website development: HTML, CSS, JavaScript, PHP, Python, Ruby, C#, Java; right choice.

Lesson 5 Universal programming languages

Language overview: Java, Objective-C, Swift; C#, C++, Python: the right choice.

Lesson 6

List of technologies; portfolio diplomas and certificates; personal qualities. The view of a technical specialist and HR.

Lesson 7

Dream work, psychological aspects; query technique.

Lesson 8

Interviews for programmers: how to behave, what to say, what to listen to; probationary period and the rules for passing it.

Lesson 9

Overview of freelance sites; features of registration; account registration; how to stand out among the majority of performers.

Lesson 10

Order search strategy; order priority: what to take into work; Negotiation; tasks and pitfalls of TK; methods of contacting the client; writing responses and attracting the attention of customers; the right questions.

Lesson 11

Payment methods: non-cash or cash; prepaid or postpaid; an overview of situations in which each of the methods will work better; preparation for work and binding agreements with the client; features of the work process; final stages of cooperation; feedback exchange; "consult" technique.

Lesson 12

How is development in large companies? Who are analysts, designers, testers, architects, projectmanagers, team-leads, etc.

Lesson 13

What does the IT career ladder look like? In what specialties is it easier to start your journey? What are the development prospects?

Java is an object-oriented programming language developed by Sun Microsystems. Java programs are translated into byte code, which is executed by the Java virtual machine - a program that processes byte code and transmits instructions to the equipment as an interpreter. An important feature of Java technology is a flexible security system due to the fact that programs are executed, programs are fully controlled by the virtual machine.

Recently, a number of improvements have been made that slightly increase the speed of execution of Java programs.

Programs run with Java:

— application of byte-code-to-machine code translation technology;

- wide use of platform - oriented code;

- hardware that provides accelerated processing of byte-code;

To get a good position, you need to be a good IT specialist. You can get good work experience by graduating Java courses at the Leader Center in Moscow, You will acquire professional knowledge of Java - programming. Classes are held in modern classrooms equipped with all necessary equipment. Java course teachers are professionals - practitioners with specialized education.

  • Translation

"You're lucky. We lived for three months in sacks made of sackcloth in dirty sheds. We got up at six in the morning, washed bags, ate a crust of stale bread and went to work at the mill, 14 hours a day, from Monday to Sunday, and when we returned home, our dad flogged us with his belt ”
- Monty Python's Flying Circus, The Four Yorkshiremen

Lazy youth.

What's good about hard work?

A sure sign of my aging is my grumbling and complaining about " modern youth”and how they don’t want or can’t do anything complicated anymore.

When I was young, I learned to program using punched cards. If you accidentally made a mistake, you didn't have this " contemporary opportunity”, how to press the backspace key and re-enter what you need. You had to throw away the card and start inputting again.

When I started interviewing programmers in 1991, I usually let them use any programming language to solve my coding problem. In 99% of cases they chose C.

They usually choose Java these days.

Don't get me wrong: there is nothing wrong with using Java as your working language.

Wait a minute, I want to change this statement a bit. I am not suggesting in this single article that there is anything wrong with using Java as a working language. There is a lot wrong with this, but it will have to wait until another article.

Instead, I want to say that Java as a whole is not complex enough to separate great programmers from mediocre ones. Maybe it's a great language to work with, but that's not what we're talking about today. I might even go so far as to say that the fact that Java is not complex is a feature, not a bug, but it leads to this problem.

This may sound a little harsh, it's just my humble opinion, but there are two things that are traditionally taught in universities in computer science ( Computer Science, CS) and which many people never fully understand: pointers and recursion.

Early in college, you take a course in data structures, with linked lists, hash tables, and other little things, with extensive use of pointers. These courses are quite often used as dropout courses: they are so hard that everyone who doesn't have the mental ability needed for CS drops out, which is a very good thing, because if you think pointers are hard, then wait until you have to. prove the facts of the fixed point theory.

All those young geniuses who wrote ping-pong for the Apple II in BASIC in high school go to college, take CompSci 101, a course in data structures, and when faced with working with pointers, their brains just explode, and they decide to transfer. to political science, because now law school seems like the best choice for them. I've seen dropout charts for CS students many times, and the dropout rate is usually between 40% and 70%. Universities tend to see this as a waste; I think it's just a necessary natural culling of people who simply can't be happy or successful in their careers as a programmer.

Another difficult course for many students was a course that taught functional programming, including recursive programming. At the Massachusetts Institute of Technology, the bar was set very high for these courses, a required course (6.001) and a textbook (Abelson and Sussman, Structures and Interpretation Computer Programs (Abelson & Sussman's Structure and Interpretation of Computer Programs)) that are used by dozens or even hundreds best schools CS as the de facto standard for introductory CS courses.

The complexity of these courses is simply overwhelming. In the first lecture, you are fully familiar with Scheme, and now you can be privy to the operation of fixed-point functions that use other functions as input. When I was able to complete this course, CSE121 at the University of Pennsylvania, I saw how many, if not most, students failed to do so. The material was too difficult. I e-mailed the professor a long letter full of sobs saying it's just not fair. Someone at the university must have heard me (or one of the other complainers) because this course is now learning Java.

Now I'd rather not be heard.
Think you know what it is? Check Yourself Here!

This is what is being debated. Years of whining from lazy students like me, coupled with complaints from the software industry about how few American universities are churning out CS experts, have taken their toll, and over the past decade, many otherwise flawless schools have switched 100% to Java. And it was welcome: recruiters who use "grep" to evaluate resumes (note: grep is a Unix program that allows you to select lines that contain the desired word), seems to like it, and best of all, nothing in Java is hard enough to really weed out programmers without that part of the brain that is responsible for pointers or recursions, so the dropout rate in universities goes down, CS departments turn out more students, they get more money for it, and everyone gets better.

Happy students of Java schools will never encounter terrible segfaults (note: Segmentation Fault- typical mistake when contacting the wrong address) when trying to implement pointer-based hash tables. They will never make crazy, crazy attempts to pack things into beats. They will never fill their heads with thoughts about how, in fully functional programs, the value of a variable never changes, and yet it constantly changes! Paradox!

They do not need this part of the brain to get a red diploma.

Am I just one of those old-fashioned grunts like the Four Yorkshiremen who brag about how hard it was to live in the harsh old days?

Hey, in 1900, Latin and Greek were required subjects in college, not because they were somehow necessary in life, but because knowledge of them was one of the required marks of an educated person. In a sense, my arguments are no different from those made by the proponents of Latin (all four). “[Latin] trains your mind. Trains your memory. Unraveling sentences in Latin is a great exercise for the mind, a true intellectual puzzle, and a good introduction to logical thinking wrote Scott Barker. But I could not find a single university that still teaches Latin on a mandatory basis. Are pointers and recursion the Latin and Greek of computer science?

So, I can easily agree that pointer programming is not necessary in 90% of code development today, and is even dangerous in industrial code. Yes. Wonderful. And functional programming is not often used in practice. I agree.

But it's still important to some of the most exciting software developments. For example, without pointers, you will never be able to work on the Linux kernel. You can't understand a single line of Linux code or any operating system without a real understanding of pointers.

Without understanding functional programming, you can't come up with MapReduce, the algorithm that makes Google so scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is clear to anyone who remembers from their 6.001 equivalent course that truly functional programs have no side effects and are therefore easily parallelizable. It's very revealing that Google invented MapReduce and Microsoft didn't, and that says something about why Microsoft is still playing catch-up trying to get the basic search engine functionality working while Google has moved to next problem: Skynet building the world's greatest parallel supercomputer. I don't think Microsoft really understands how far behind they are along the way.

But even away from tasks where the importance of pointers and recursion is obvious, their real importance is that building large systems requires the kind of brain flexibility that you get when studying them, and the kind of brain power that you needed in order not to crash. from the course during training. Pointers and recursion require certain abilities from a person: to reason, to think abstractly, and, most importantly, to see the problem at several levels of abstraction at the same time. Therefore, the ability to understand pointers and recursion is directly related to the ability to be a great programmer.

Nothing in an all-Java education will weed out students because their brains are not flexible enough to understand these concepts. As an employer, I see that 100% Java schools have started to churn out CS graduates, some of whom are simply not smart enough to be programmers with anything more sophisticated than Another Java Accounting Application, although they managed to creaking with "modern-simplistic-for-stupid" term paper. These students would never pass MIT's 6.001 or Yale's CS 323, and honestly, that's the reason why, from an employer's point of view, an MIT or Yale degree carries more weight than a Duke's. which recently became All-In-Java, or Penn University, which replaced Scheme and ML with Java, trying to teach in it the course that once almost killed me and my friends, CSE121. It's not that I don't want to hire the smart guys from Duke or Penn - I hire them - it's just that it's much harder for me to figure out who they are. I used to be able to tell that a guy is really smart if he can figure out a recursive algorithm in a few seconds, or implement functions that manipulate linked lists based on pointers as fast as he can write on a piece of paper. But in the case of Java graduates, I can't tell if the applicant has trouble with these tasks because they just don't have the right education, or because they don't have the right part of the brain to do a great job as a programmer. Paul Graham calls them the Unfortunate Programmers.

It's bad enough that Schools-in-Java don't weed out those who can never become great programmers, but schools can rightly say that it's not their problem. The industry, or at least grep-using recruiters, is really demanding that schools teach Java.

But "Java-only-schools" have also stopped training students' brains to become knowledgeable, nimble, and flexible enough to be good at designing programs (and I don't mean object-oriented "design" when you spend countless hours rewriting your own code while rearranging your object hierarchy, or suffering from fake "problems" like choosing "contains" or "is" (note: has-a vs. is-a, choice between inheritance and class composition)). It takes practice to learn to think at multiple levels of abstraction at the same time, which is absolutely essential to designing great software architecture.

You might be wondering if learning object-oriented programming (OOP) can be a good substitute for pointers and recursion as cleaning courses. The short answer is no. Without discussing the merits of OOP, one can simply say that it is not complex enough to weed out mediocre programmers. Teaching OOP consists mainly of memorizing a few vocabulary terms such as "encapsulation" and "inheritance" and memorizing the answers to many questions about the difference between polymorphism and operator overloading. No more difficult than memorizing significant dates and names in history class, OOP sets an inadequately simple task in order to scare off freshmen. When you have problems with OOP, your program still works, it just becomes difficult to maintain. Allegedly. But when you have pointer problems, your program throws a Segmentation Fault, and you have no idea what's going on until you stop, take a deep breath, and try to actually get your mind to work on two levels of abstraction at the same time. .

Grep-using recruiters are being ridiculed here, by the way, and there are good reasons for this. I've never met a person who understood Scheme, Haskell and C pointers and couldn't master Java in a couple of days and then write better Java code than people with five years of Java experience, but try to explain this is an average HR biorobot.

And what about the mission of CS-faculties? This is not PTU! Their job is not to prepare people for industry. This is only for community colleges, you will be told (note: in the USA, a two-year college that trains specialists secondary qualification to work in the local community) and government retraining programs for laid-off workers. They are supposed to give students the fundamental tools to live their lives, not prepare them for their first days of work. Correctly?

Yet. CS are proofs (recursion), algorithms (recursion), languages ​​(lambda calculus), Operating Systems(pointers), compilers (lambda calculus) - and the result is that Java-schools that don't teach C and don't teach Scheme don't really teach computer science. How useless in the real world is understanding the concept of currying (note: in functional programming, generation from one function of another function with fewer arguments; for example, from f(x,y) = x*y getting the function f3(x) = f(x,3) = 3*x), it is also a necessary prerequisite for higher education in the CS area. I don't understand why the professors on college approval committees let their programs get dumb to the point that not only can't they produce job-ready programmers, they can't even produce PhD graduates ( note: analogue of a candidate of sciences) and compete with them for jobs. No, but wait. Forget it. Maybe I do understand.

Indeed, if you go back and study the discussions that took place in academia during the Great Java Migration, you will notice how much interest there was in whether Java was simple enough to be used as a teaching language.

“Oh my God,” I thought, “they were trying to dumb down the course even more!” Why not spoon feed all the students? Why don't the teachers themselves do the tests for them - then definitely no one will switch to the humanities! How is it supposed to teach someone anything if the course of study is carefully designed to be even easier than it is now? There seems to be an effort (PDF) to develop a simple subset of Java intended for students to learn, producing simplified documentation that carefully hides all this EJB/J2EE garbage from their delicate brains so that they don't bother their tiny heads with some classes other than those that are necessary in order to solve the standard simplest set of tasks for the course.

The most sympathetic explanation for why CS departments are so enthusiastic about blunting their courses is that they will have significantly more time to teach relevant CS concepts, unless they are forced to spend two lectures explaining the difference between, say, int and Integer in Java. Well, if that's all it is, 6.001 would be a great answer for you: teaching language Scheme is so simple that the entire language can be told to smart students in about ten minutes; after that, you can spend the rest of the semester on fixed points.

I go back to ones and zeros.

(Do you have ones? Lucky bastard! All we had were zeros.)

End
Translator: Ilya Bolodurin

The article is old, but "hooked".

upd
In the comments, many asked to voice own opinion, not a stupid copy-paste article.