I teach STEM high school, community college and graduate Science, Technology*, Engineering and Mathematics subjects. I also teach Digital and analog signal processing for cellular and satellite communications systems. I have a BSc from UC Berkeley in Bio-Engineering and a Master of Engineering in VLSI (integrated circuit - microchip) Design with Business Administration in Finance and Marketing. I have worked with five successful start-ups and I am now dabbling in four more. I currently te... [more]

Algebra 1

I teach Algebra 1, 2, Linear Algebra, Geometry, Trigonometry, pre-Calculus, Differential equations and Calculus. I teach 5th graders to college students in my Algebra classes. I also introduce symbolic algebra as a way to verify your algebraic solutions.

Algebra 2

I teach STEM students and refresher mathematics courses.

Calculus

I teach applications of integral and differential Calculus for electrical engineering and physics courses.

Microsoft Excel

General Computer

Microsoft PowerPoint

Prealgebra

Precalculus

I teach STEM interns during the summer and full time students during the rest of the year.

Trigonometry

I teach the calculus and trigonometry refresher courses at NPS and work in laser communications.

ACT Math

I teach ACT Mathematics to STEM interns and for mathematics review. I use online tools aand support apps that can be accessed via smartphone or tablets and Wearables. I teach at your pace of learning not my pace. I encourage students to then teach someone else what they just learned. This helps solidify their recent knowledge and learning experience.

Discrete Math

I have taught discrete mathematics and cryptography courses along with logic design of computing elements at a postgraduate school. I have designed ISAs (instruction set architectures) for RISC CPUs and worked with on hardware hacking various security systems.

Differential Equations

I teach ODE and PDE, ordinary and partial differential equations for Linear and Non-linear systems. 1st, 2nd, Nth order Linear ODE for physical systems and lumped circuit analysis. I also teach Laplace transforms as a solution method to reduce ODES to roots and zeros in a rational equation called a transfer function. These are used to describe the output to input ratio of a physical system. I also show how to plot the magnitude and angle of a transfer function as a. Function of an input variable. Any example of this is the frequency response of an audio speaker. Gravitational relationships of rising and falling objects can be described by 2nd order ODEs. Integral calculus and integration by parts are used to solve certain class of ODEs. PDEs are extended from ODEs to describe Tensors and fluid dynamics and an example of a drum can be used to show simple PDE boundary case solutions.

Business

I did a dual degree for my Master of Engineering UC Berkeley program. Business Administration with Economics, Finance and Marketing. I have my own business and I do Business Development for two start-ups today. I have had Strategic Sales positions in Fortune 1000 companies. I have worked for 5 start-ups that have had a successful M&A or IPO event.

C++

I teach two Operating systems computer science courses. As a prerequisite, I teach 5 weeks of C/C++ so that students understand how mutex, semaphores and a multiple producer/ multi consumer model works. The C shell and Bourne, K shells are also taught in my class along with both Linux and older BSD Unix commands. I find that these are necessary for the Minix memory project students to complete in my course. 'Hacking' Minix and measuring memory performance improvement is the key principle in my course.

C

I teach five weeks of C programming language using Code::Blocks, a free integrated development environment (IDE). I also teach the critical order in programming so that students understand how mutex, semaphores and a multiple producer/ multi consumer model works. I use the C shell and Bourne, K shell programs in my class along with both Linux and older BSD Unix commands. These I find are necessary for the Minix, the simpler LINUX predecessor, memory project students have to complete in my course. 'Hacking' the Minix memory allocation algorithms and measuring memory performance improvement is the key principle in my course.

Computer Programming

I teach two Operating Systems computer science courses. As a prerequisite, I teach 5 weeks of C/C++ so that students understand how mutex, semaphores and a multiple producer/ multi consumer model works. The C shell and Bourne, K shells are also taught in my class along with both Linux and older BSD Unix commands. These, I find, are necessary for the Minix memory project students have to complete in my course. 'Hacking' Minix and measuring memory performance improvement is the key principle in my course. I teach Java, Python and Verilog ( a hardware description language HDL) programming languages.Verilog is used in the design, simulation, synthesis and verification by assertions for the computer microchips since 1985 which started as gate arrays at SUN Microsystems and dominates 85% of the integrated digital circuits industry. I teach high school and STEM students elementary programming with LabVIEW G and Lego Mind storms.

Computer Science

Hardware: I teach SoC design with multiple CPUS on on SoC (system on chip) now called NoC (network on chip). EC3800 at NPS is my course that I developed an Ebook for with ARM and MicroSemi (formerly Actel). Students would write or modify Verilog HDL and then Synthesize a MP7 or a CortexM1 ARM 32 bit core on a FPGA then write a C or C++ program to run on the ARM 32bit cpu, compile it, download it onto the FPGA device based ARM cpu and run it for the class Lab Project. Software: Sometimes I had to teach C++ programming and operating systems principles as part of this class if the prerequisites were not met. I teach two Operating systems computer science courses. As a prerequisite I teach 5 weeks of C/C++ so that students understand how mutex, semaphores and a multiple producer/ multi consumer model works. The C shell and Bourne, K shells are also taught in my class along with both Linux and older BSD Unix commands. These I find are necessary for the Minix memory project students have to complete in my course. 'Hacking' Minix and measuring memory performance improvement is the key principle in my course. Firmware and Assembly language: I teach the ISA or instruction set architectures of RISC and CISC computers. I use compilers to generate the assembly code program from the high level programming languages like C,C++, Python so that students can see the different stages s program goes through to finally get to machine binary code. Algorithms: I use the recipes analogy to show how more efficient memory and better performance solutions can be designed by analysis of simple but complete ones.Today I also teach parallel computing algorithms and message passing and cache tiling to prevent subunity thrashing conditions. Intel has automated the conversion of single to Parallel threaded programs for their Compilers and CISC architectures.

Fortran

I have taught and used Formula Translation (FORTRAN) since 1973 for Engineering and scientific applications at Merritt Community College. I have also taught and used. PL/1 programming language 1 which is the successor to ForTran at SLAC (Stanford Linear Accelerator Center) for Wire list and shielding calculations. Today I use Parallelized versions of ForTran on Intel MICs and using intel TBB and Silk. Applications I work on range form CFD for hypersonic flight simulation and Metrology.

Linear Algebra

I teach a review mathematics linear algebra class for pre and post calculus students. Examples are drawn from linear systems such as linear RLC circuits and mechanical engineering feedback systems. I show and distinguish non linear systems. I do a quick review of fundamental algebra I and II to make sure students have the proper foundation at the beginning of my course.

Linux

I teach CS3070 Operating Systems at the Naval Postgraduate School. I use Linux, Unix and Minix as examples of operating systems. I also cover embedded Linux which is vulnerable to a Blind Return Oriented Program +(BROP) Attack. I cover shells, memory allocation algorithms and secure libraries. I compare Apples IOS to Linux and Unix. Prior to this o also taught EC3820 Modern operating systems. I use Tannenbaum s text books and the red Hat and Ubuntu Linux software.

Logic

I teach Naval postgraduate students our course EC2820. I start with basic Boolean logic and basic Digital Logic design for and not and or logic then Nand , Nor and xor circuits. We start with exhaustive truth tables. I use DeMorgan's theorem for logical equivalents. Then using storage or memory elements, logic finite state machines. I cover computer science theory of automata with the Turing machines topic. I show how a finite state machine is the basis for a central processing unit (CPU) in today's computer. It fetches, decodes then executes the CPU instructions on its data.

Marketing

I have a dual degree (Master of Engineering) in Business Administration - marketing + finance and Electronics Engineering and Computer science (EECS). The marketing work I do today is with a Social Media Analytics company that specializes in the development of a Social Engagement Strategy Solution for maximum Effectiveness and Social footprint.

MATLAB

I have taught signal processing and robotics with Matlab and Ec1010 at NPS for several years, since 2004. I use simulink and Matlab for my DSP (digital signalling processing) courses to study frequency shift key, phase shift and OFDM modem signalling. My students and I write M code and use Simulink modules for Lego Mindstorms. SE 4003 uses Matlab, simulink and Lab view G for Software Systems labs.

Organic Chemistry

I use my foundation of UC Berkeley Bio-Egineering BSc degree. I teach this to my STEM students during our summer programs, where my basis is UC Berkeley Chemistry 8A/8B for organic chemistry and biochemistry 102A/B. I start with the basic C H O single and double electron bond chemistry and move into pentagon, hexagonal octagonal ring and other mirror left and right handed reactions. I review stereo chemistry and chiral molecules and finally stereo isomers and stereo isomerism and superimposable by rotations. I conclude with a preview on amino acids and DNA biochemistry.

UNIX

I have used BSD UNIX and commercial UNIX since 1983. This was used as the workstation operating systems for EDA (electronic design automation) tools used in the design and verification of integrated circuits and systems on chip (SoC). The C programming language was used to write OS and other special scripts to perform UNIX data processing tasks. The 20 survival UNIX commands and view or vi editor were popular in the west coast as was emacs (east coast). Today I use LINUX and have taught courses with MINIX, the predecessor to LINUX and with the C shell.

Chemical Engineering

I have worked with both inorganic chemistry for the semiconductor industry and in biochemistry and organic chemistry with nanotechnology. I have also done BioEngineering, teach a device course and design nanotechnology Integrated circuits.

Electrical Engineering

I have a BSc and MSc in electrical engineering and computer science from UC Berkeley. I teach a number of Naval Postgraduate school ECE courses from analog and digital circuits. I teach linear systems courses for circuits and systems. Calculus and Laplace transforms are used to simplify complex circuits to root solvers to determine the transfer functions of these circuits. Logic gate ircuits arr used to builda hierarchy to finite state machines and floating point and integer arithmetic logic units (ALU) which are the core of microprocessors. I have designed several mixed signal (analog and digital) systems on chip (SoC)s.

Computer Engineering

I teach digital Boolean logic to finite state machines, Verilog HDL to Synthesis and Simulation in FPGAS and VLSI Systems on Chip(Soc). I worked on the RISC VLSI design at Xerox PARC for the first Mead & Conway course CS292 and CS152 computer architectures at UC Berkeley CMOS is the prevalent technology today and I teach the principles of transistors switching and memory Circuits. RISC-V is now the most interesting architecture as it supports parallelism via register windowing between processor on the same SoC. I have also taught ARM, MIPS, SPARC and CISC(x86 intel) architectures. I teach the EC2820, EC2840, and EC3800 Computer Architectures and Digital Design courses at the Naval Postgraduate School in Monterey since 2005.

Python

I have taught Python for 2 years and latest version is using 3.4 with multi-threading and multi-process. Example for the multi consumer/producer comparisons and using Mutexes with a circular buffer model. Students determine number of processes or thread limits for their PC, laptop or Mac. There is an extra layer of instrumentation in Python to measure performance and to reduce statistical noise by averaging several hundred experiments. This is now used as a programming example in an operating systems course.

Finite Math

I teach finite mathematics as a preview to wireless communication and mathematical cryptography algorithms and processes I teach Finite math as EO3502 EC2410 and EC2500 for Naval postgraduate school (NPS). I start with Sets, partitions and trees, probability then how to compute permutations and combination with two die. Next random variables, averages, bell or Gaussian normal distributions, computing expected and standard deviation values. Bayes and conditional probabilities are shown for dependent processes. System engineering design benefits of parallel redundant structure architectures such as RAID storage networks over serial architectures are shown. I have a Master of Engineering in Electronic and Electrical engineering from UC Berkeley.

R

R is a cloud based statistics tool that I use for elementary stat analysis. It's easy to use however you do need to know the basics ideas of probability distribution and some basic ideas of programming. Later I move to C++ and AWS or other virtual machine, GCE, Azure, Oracle's new cloud, for cloud based tools. Julia, C++ and GO are still the best high performance computing (HPC) languages. R is free and other equivalent tool like MatLab simulink or Mathematica are not free.