Upon completion of the course the student will be proficient with the language and the main results of linear algebra, which is arguably the most important course in all undergraduate mathematics. The secondary course objective is to facilitate the transition of the students from the computationally oriented introductory mathematical courses to the upper level undergraduate math courses, which requires significantly more abstract thinking and ability to prove mathematical statements. An introductory linear algebra course, which is a prerequisite for this course, is devoted mainly to the computational aspects of solving systems of linear equations. As an abstract mathematical discipline, linear algebra studies linear operators acting on vector spaces. One of our goals in this course is to see how abstract concepts help clarify and understand deeper computational procedures. A significant attention will be paid to the logical structure and technique of various proofs, and all (well, almost) facts in this course will be proved.