Post Job Free
Sign in

Software Develop by multithread (pthread) C/C++/Python oin Linux, OOD

Location:
Ames, IA
Posted:
February 18, 2012

Contact this candidate

Resume:

■ Objective: To apply for the permanent full-time-regular position of Software Developer

■ Technical Skills:

● 10+ years experiences of C and C++ (STL/Boost) programming (8 years in company and 6 years in research lab)

■ High performance/Low Latency, multi-threaded (pthread) and multi-processed (message passing interface

MPI) parallel grid programming by C/C++/Python on Unix/Linux systems, Parallel & distributed

cluster computing for solving quantitative models, C/C++ programming with Object-oriented design (OOD)

pattern, GCC/G++ compiler, GDB/Valgrind debugger, and program performance analysis by

gprof, google CPU profiler; TCP/IP socket programming

■ Real-time programming (multi-threading, OS IPC/synchronization mechanisms, communications/sockets); Strong

knowledge of High frequency algorithmic trading systems, Linux Kernel/Networking; Familiar with Vi and

Shell script on Linux; Knowledge of SQL

■ Strong skills and hand-on experiences of designing, debugging and technical troubleshooting of high-

performance computing C and C++ (STL/Boost) program from small to very large scale Unix/Linux (shared &

distributed memory) systems (with 3000+ CPUs)

■ Cygwin-based tools for C++ development environment, Quantitative analysis for quantitative optimization

models, C++ program design and implement on Intel/AMD/Multi-core processors)

● Solid understanding of data structures (e.g. Vectors, Binary Trees, Linked Lists and STL) and algorithm design

and implementation techniques; Experience and strong knowledge of the Systems Development Life Cycle (SDLC) –

requirements gathering, application design, development and testing

● Demonstrated knowledge of financial products (derivatives pricing, options, equities, fixed income, FX, futures

and forwards, arbitrage analysis for options by put-call parity, convexity analysis, bull/bear/butterfly spread, binomial

pricing models, Black-Scholes formula, Greeks and related applied mathematics for quantitative finance);

Passed CFA level 1 exam

● 5+ years experiences with concurrent programming (multithreading & multiprocessing, IPC, inter-thread message

passing, thread synchronization, boost thread pool usage, high-frequency message exchange among threads); Solid

understating of computer hardware/software architecture; Strong working knowledge of Unix/Linux

● 10+ years experiences of using C/C++ program debug and memory-leakage-check tool (gdb, Valgrind) to debug C/C++

Program and analyze/optimize program algorithm performance by Google CPU profiler

● 5+ years programming experiences of designing/implementing mathematical optimization techniques (linear/integer

programming models) by C/C++ and solving them by CPLEX or calling solvers’ APIs, e.g. Lp_solve5.5 (an open

source solver for linear/integer programming optimization models)

● 1+ years experiences of SAS programming for data analysis including statistical graphics; regression diagnostics;

and complex analysis of variance models (e.g. ANOVA)

■ Projects of Statistics Analysis, Financial Derivatives Development and Classical algorithm/data-structure

Development

● Used binomial pricing (single/multiple period) models to perform pricing for American/European call/put options

● Designed and implemented a statistics class that computes the first four moments (mean, variance, skewness, kurtosis)

of a sample from Gaussian Distribution by C++ STL

● Designed and implemented a function (by C++ STL) that can generate random variables that obey Gaussian

distribution, it can transform uniform distributions to normal distributions with polar forms of the Box-Muller

transformation which is faster and more robust numerically than its basic forms

● Designed and implemented a Newton–Raphson routine (by C++ STL) so that it does not endlessly loop if a root is not

found within a given time budget. It can be used to find a reasonable solution in a reasonable time in the process of

searching solutions for option prices by Black-Scholes formula

● Designed and implemented some routines (by C++ STL) that can compute payoff of vanilla options with option names

and strike prices as input arguments

● Designed, implemented and tested a C++ routine that can build a singly linked list and print its elements backwards

with STL container – stack

● Designed, implemented and tested a C++ routine that can pre-order/in-order/post-order traverse a binary search tree

recursively or iteratively without stack overflow

● Designed and implemented SAS program that perform linear regression analysis for models (with 1000+ variables)

■ Education:

● Fall 2005 - now, Ph.D. candidate (focus on multithreaded/multiprocessed low latency, high-performance algorithm design

and implement by C++, quantitative model/data analysis) of Computer Engineering at Iowa State University, USA. (I am

available in Mar. 2012, willing to relocate)

● Fall 2003 - Fall 2005, Technical University of Denmark. Graduated with Master of Science (computer engineering) in Fall

2005.

● Fall 1991 - Fall 1995, Tianjin Technical University, Tianjin, China, Graduated with Bachelor of Engineering in Fall 1995

■ Summary of Experiences and knowledge of work and research (8 years in a company and 6 years in a research lab)

● 1995-2003 Software Engineer, RuanShuTong Software Development Company, Tianjin, China. Designed and

implemented parallel computing algorithms to improve the performance of solving large-scale numerical problems on multi-

processor systems

■ Used STL library to design C++ programs (e.g. multiprocessing & multithreading) of parallel & concurrent (grid)

computing algorithms for large-scale numerical problems (with large-scale numerical computing)

■ Used Object-oriented programming to design/implement (C/C++) high-performance parallel computing algorithm

for numerical models (e.g. designed and implemented parallel algorithms to solve large-scale multi-objective optimization

models with tens of thousands of variables on a 3200-CPUs Linux cluster systems and obtained linear speedup)

■ Used GDB to debug C/C++ programs; Analyzed and optimized the programs by finding “hotspot” part of them with

profile tools, e.g. gprof

● Fall 2005 - now, research assistant of electrical and computer engineering department at Iowa State University, focus on solving

network flow problems by multithreaded/multiprocessed parallel low-latency high-performance computing algorithm

design and implementation with objected-oriented programming language (C++) for quantitative optimization models,

which require satisfying commodity demands meanwhile minimizing total commodity generation and transmission costs under

some tough constraints; This research work can be used to do industry investment planning

■ Used STL/Boost library to design/implement C/C++ programs (e.g. multiprocessing & multithreading, MPI,

boost::thread, pthread) of parallel & concurrent (grid) computing algorithms for large-scale network flow problems

■ Designed and implemented a task scheduler (by C++) that can distribute computing tasks on Linux multi-core-processor

(cluster) systems and achieved linear speedup, e.g. 20x performance improvement by approximate 20 processors

■ Used memory leakage check tools to debug C/C++ programs (e.g.Valgrind); Analyzed and optimized C/C++ program

with profile tools, e.g. google CPU profiler

■ Designed and implemented parallel computing algorithms to improve performance of mathematical computing problems

on multi-processer systems

■ Relevant Coursework:

● Advanced Mathematics (Univariate/Multivariate calculus; Linear algebra)

● Computer Processing of Statistical (data structure; content and programming aspects of SAS; advanced techniques in the use of SAS for data analysis including statistical graphics; regression diagnostics; and complex analysis of variance models)

● Design and Analysis of Algorithms (a study of basic algorithm design and analysis techniques; advanced data structures; applications to sorting, graphs, and geometry)

● Parallel Algorithms and Programming (parallel computation; performance measures; basic parallel constructs and communication primitives; parallel programming using MPI; parallel algorithms for selected problems including sorting; matrix, tree and graph problems)

● Convex Optimization for Systems Engineering Analysis and Design (abstract algebra, linear algebra, real analysis, functional analysis, and optimization methods in electrical engineering)

● Computer Systems Architecture (quantitative principles of computer architecture design)

■ Awards and honors:

● NSF-EFRI (National Science Foundation - Office of Emerging Frontiers in Research and Innovation) scholarship (August 2008- present)

● Session chair at the 20th International Symposium on Mathematical Programming Chicago, U.S.A., August 23-28, 2009 (the conference is held once every 3 years). Participants included five future recipients of the Nobel Memorial Prize in economics and six future recipients of the John von Neumann Theory Prize in operations research and management sciences

● Tuition Scholarship of Technical University of Denmark (Fall 2003 - Fall 2005)

● Iowa State University graduate student travel grants ($200) for presenting an academic paper in the above conference



Contact this candidate